0

常に同じ正確な形式ではない JSON を逆シリアル化しようとすると、問題に直面します。私が取得している JSON は次のようなものです (わかりやすくするためにトリミングされています)。

{  
  "header": {  
    "code": "4",  
    "description": "Input Validation Error",  
    "errors": {  
      "code": "100",  
      "description": "externalServiceCode: must match '[A-Za-z0-9_]+'"  
    }  
  },  
  "externalCode": "259716_TRAVELAC"  
},  
{  
  "header": {  
    "code": "4",  
    "description": "Input Validation Error",  
    "errors": [  
      {  
        "code": "100",  
        "description": "Currency not valid"  
      },  
      {  
        "code": "100",  
        "description": "Can not be empty"  
      }  
    ]  
  },  
  "externalCode": "259716_TRA"  
}  

ご覧のとおり、「エラー」の値は単純です。

 "errors":{"code":"1","description":"description"}  

または配列として来るかもしれません:

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

私は JSON 形式を制御できません (取得しているサービスは別の会社によって作成されています)。

問題は、この JSON を C# に解析する簡単な方法が見つからなかったことです。カスタムクラスを作って、単純なオブジェクトとして試してみると、複数のエラーがあるとデータが欠落し、配列と見なすと、JSON にエラーが 1 つしかない場合は何も取得されません (エラー部分に括弧 [ ] が 1 つしかない場合は、欠落していることに注意してください)。

これを解決する方法はありますか?いくつかのアプローチを試しましたが、何もうまくいかないようです。

4

2 に答える 2

-1

この回答を見ることができると思います。たとえば、Newtonsoft を使用して JSON を逆シリアル化する必要があります。

クラスを作成していない場合は、JSON をコピーしてPaste as JSONをクリックします。

「JSON をクラスとして貼り付け」は、ASP.NET および Web Tools 2012.2 RC の優れた機能です。この機能は、有効な JSON テキストから C# または VB.NET で厳密に型指定されたクラスを生成するのに役立ちます。

于 2013-09-03T22:30:42.157 に答える