2017-02-22 1 views
0

に空の要素を置く:JSONのデシリアライズ、誰かが私のWEBAPIに無効なJSONを送信するときに、配列

"items" : [ 
     , 
     {    
      ... 
     } 
] 

、その後のデシリアライゼーションは失敗し、配列の最初の要素として「ヌル」値を入れていない、それはjsonデシリアライザが失敗してエラーを返す可能性がありますか?配列からヌル要素を削除するだけです。

空の要素を削除できるコンバーターを追加しようとしましたが、既存の配列(デ)シリアライゼーションの仕組みのソースを見つけることができません。

List/Arrayを逆シリアル化することができるMassTransit.Serialization.ListJsonConverterが見つかりましたので、メソッドをデリアライズしてメソッドをデリアライズし、null値が含まれていれば結果をチェックしますが、Newtonsoft.Jsonは例外ですそれは私が現在の直列化復元方法あなたのコメントに関連して

+3

あなたのJsonが正しいフォーマットでない1つの理由 – Valkyrie

+0

Valkyrieeが正しければ、より良い方法は、破損したデータの原因を取り除き、対処することではありません。 – Robert

+0

私はそれが間違っていることを知っているが、デシリアライザは失敗せず、サーバエラーは無効なjsonにはうまく対応していないので、jsonの間違いやヌル要素を捨てるという適切な記述を返すべきです。 –

答えて

-1

を拡張するために自分でこれだけの可能な解決策を何かを解析したくないWEBAPIのためであるとしてアレイコンバータ

が含まれています。あなたはいくつかの貴重な応答を返すことができFormatExceptionで

string jsonString = "SOME JSON STRING"; 
try 
{ 
    JsonValue.Parse(jsonString); 
} 
catch (FormatException fex) 
{ 
    //handle formatting exceptions 
} 
catch (Exception ex) //some other exception 
{ 
    //handle other exceptions 
} 

: あなたは、このようなJSON文字列を解析することができます。

+0

問題は、表示されている入力の現在のコードが例外をスローしないことです。 – CodeCaster

関連する問題