Web APIがint値を期待している場合、クライアントがJSONでnullまたは空の文字列を送信すると、自動的に0に変換されます。そのような構成はありますか?私はそれが期待どおりではないので、エラーを投げて欲しいです。Newtonsoft Json.Netヌルまたは空の文字列の変換
答えて
あなたはJsonPropery
属性であなたのDTO /プロパティに注釈を付け、必要に応じてそれをマークすることができます。
public class MyDto
{
[JsonProperty(Required = Required.Always)]
public int RequiredProperty { get;set; }
}
この属性では、プロパティの値がJSON文字列で指定されていない場合JsonConvert.DeserializeObject()
が例外をスローします。
は、例えばここを参照してください:https://dotnetfiddle.net/TstCau
"int"として宣言することで、整数の中にnullを入れることができます。
この後、変数がnullに等しいかどうかを確認してエラーメッセージを表示できます。
私はすべてのデータモデルを不正形式にしてそのようなチェックを追加したくありません。私がしたいのは、apiの誤った使用を防ぐことです。誤ってnullが送られたり、送られても0にはならないようにします。つまり、要するにこの自動変換動作を変更したいのです。 –
ああ私はそのときの質問を誤解しました。申し訳ありませんが、可能かどうかわかりません。 – Rick
また、このソリューションはかなりハックされ、定期的に使用すべきではありません。しかし、ここに行く。
私は問題がありました - 文字列ではなく、列挙型としてコード内に入れたいと思っていました。
は、私はちょうど私があなたがそのような変換ロジックをオーバーライドするかもしれないと思う次
/// <summary>
/// Required. A type of the metric for which data is requested.
/// </summary>
public Metrics MetricType { get; set; }
[Required]
/// <summary>
/// Alias for MetricType.
/// </summary>
public string Type
{
get
{
return MetricType.ToString();
}
set
{
try
{
MetricType = value.ToEnum<Metrics>();
}
catch (System.Exception)
{
throw new ArgumentException("Invalid Type parameter.");
}
}
}
のようにゲッターとセッターをしてオーバーライド(一部のデータが[NotMapped]のように、そこに属性置いてもよい)余分なプロパティを置きます。あなたの文字列がヌルか空かをチェックし、intに適切な値を割り当てます。
- 1. Json.Netで空の文字列をnullに変換します
- 2. Newtonsoft Json.NETは空のリストのシリアライズをスキップできますか?
- 3. Firebirdのヌルと空の文字列
- 4. Newtonsoft JSON.Net SelectToken Issue
- 5. Newtonsoft json.net deserialization NullReferenceException
- 6. WebApi - ヌル文字列をヌル値に変換する
- 7. jacksonシリアライザカバー文字列ヌルから空文字列( "")とオブジェクトのヌルがnullのままです
- 8. Json.NET - EmptyOrWhiteSpace文字列プロパティをnullに変換する
- 9. ヌル文字列をヌル値に置き換えます。
- 10. Doctrine/Symfonyは、空の文字列をNULLに変換します。
- 11. retrofit2でnull文字列を空の文字列に変換するには?
- 12. UIButtonタイトルをヌルまたは空の文字列に設定する方法
- 13. newtonsoftまたはrestsharpでjson文字列を逆シリアル化する
- 14. Json.netのトラバースとHtmlEncode文字列C#
- 15. WCFビルトインJavascriptSerializerをNewtonsoft Json.Net jsonシリアライザに置き換えます。
- 16. node.js空白文字とネストされた文字列を含む文字列をjsonに変換します
- 17. sqlで空文字列を部分文字列に変換する方法は?
- 18. null文字列を空の文字列に変換する方法
- 19. 文字列のJavaヌル文字
- 20. C#:引数の検証:ヌル/空の文字列
- 21. Newtonsoftオブジェクト→JSON文字列を取得
- 22. .NETで3バイトのUTF-8文字列置換(3バイトUTF-8を文字列または文字に変換)
- 23. json.netのパフォーマンスが77kbのjson文字列
- 24. 空の文字列があるリスト内の値の型変換
- 25. ユニティでJson.NETは「型または名前空間 `Newtonsoft`が見つかりませんでした」を投げ
- 26. Newtonsoft Jsonは、ブール値のプロパティを文字列に変換して動的リストにdeserializeします。
- 27. DataMapを文字列または文字列配列に変換する
- 28. 変換文字列は
- 29. 変換文字列
- 30. 変換文字列
実際には、クライアントがAPIを誤って使用して、要求されたint(intではない)をnullまたは ""送る可能性があります。これにより、0に逆シリアル化されますが、これは間違っています。私の知る限り、あなたの提案した解決策はこれを防ぐものではありません。要するに、私が望むのは、この自動変換動作を防ぐことです。 –
@ JohnL.I私はサンプルを修正し、 ''RequiredProperty': '''を渡しても、まだ例外が発生します。私が正しく理解すれば、それはあなたが望むものです。 (https://dotnetfiddle.net/Fhy5Bfを参照) – M4N
私の間違い、私はあなたの答え、おかげで受け入れるでしょう。 –