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. は、ヌル値をlaravelの空の文字列に変換します。5.4
- 3. Newtonsoft Json.NETは空のリストのシリアライズをスキップできますか?
- 4. Firebirdのヌルと空の文字列
- 5. Newtonsoft json.net deserialization NullReferenceException
- 6. Newtonsoft JSON.Net SelectToken Issue
- 7. WebApi - ヌル文字列をヌル値に変換する
- 8. C#json配列をnewtonsoft json.netを使用してオブジェクトのリストに変換する
- 9. jacksonシリアライザカバー文字列ヌルから空文字列( "")とオブジェクトのヌルがnullのままです
- 10. Json.NET - EmptyOrWhiteSpace文字列プロパティをnullに変換する
- 11. Doctrine/Symfonyは、空の文字列をNULLに変換します。
- 12. ヌル文字列をヌル値に置き換えます。
- 13. retrofit2でnull文字列を空の文字列に変換するには?
- 14. はNULLを文字列に変換します(空文字または文字通りNULLです)
- 15. Json.netのトラバースとHtmlEncode文字列C#
- 16. UIButtonタイトルをヌルまたは空の文字列に設定する方法
- 17. newtonsoftまたはrestsharpでjson文字列を逆シリアル化する
- 18. WCFビルトインJavascriptSerializerをNewtonsoft Json.Net jsonシリアライザに置き換えます。
- 19. newtonsoft SerializeXmlNode末尾のヌル
- 20. がnullまたは文字列に変更された空の
- 21. node.js空白文字とネストされた文字列を含む文字列をjsonに変換します
- 22. ヌルSQLクエリ結果を文字列に変換
- 23. sqlで空文字列を部分文字列に変換する方法は?
- 24. 空の文字列をint32に変換するには?
- 25. 文字列のJavaヌル文字
- 26. null文字列を空の文字列に変換する方法
- 27. SQL:ヌル文字列
- 28. C#:引数の検証:ヌル/空の文字列
- 29. JSON.Netは文字列内のJSON文字列を逆シリアル化します
- 30. .NETで3バイトのUTF-8文字列置換(3バイトUTF-8を文字列または文字に変換)
実際には、クライアントがAPIを誤って使用して、要求されたint(intではない)をnullまたは ""送る可能性があります。これにより、0に逆シリアル化されますが、これは間違っています。私の知る限り、あなたの提案した解決策はこれを防ぐものではありません。要するに、私が望むのは、この自動変換動作を防ぐことです。 –
@ JohnL.I私はサンプルを修正し、 ''RequiredProperty': '''を渡しても、まだ例外が発生します。私が正しく理解すれば、それはあなたが望むものです。 (https://dotnetfiddle.net/Fhy5Bfを参照) – M4N
私の間違い、私はあなたの答え、おかげで受け入れるでしょう。 –