私はNewtonsoftのJSONパーサーを使って外部システムの結果を解析しています(外部システムは.netではないので、別のシリアル化ライブラリを使用しています)。このJSONを奇妙な配列と解析する方法
JSON文字列は私にとって面白く見えます。エンドポイントは/ clients用ですが、クライアントリソースの配列を返す代わりに、配列を含む名前付きオブジェクトを返します。私は、クライアントの配列にそれをデシリアライズしようとした場合
{"Client": [{"ClientId":"TheId"}]}
、それは例外で失敗します:
Client[] clients = serializer.Deserialize<Client[]>(aReaderWithTheJson)
例外:
は、現在のJSONオブジェクトをデシリアライズすることはできません。このような...このエラーを修正するには、JSON配列をJSON配列([1,2,3]など)に変更するか、 デシリアライズされたタイプを通常の.NETタイプに変更してください。
私はそうのように私のターゲットオブジェクトのための人工的なラッパークラスを作成することによって、正常デシリアライズするためにそれを得ている:
class ClientArray
{
public Client[] Client {get;set;}
}
// then deserialize:
var clientWrapper = serializer.Deserialize<ClientArray>(theReader);
var client = clientWrapper.Client[0];
私の質問をしかし:これは動作しますが、JSON.netのいくつかの機能があります(私のDTOを飾ることができる何らかの種類のシリアライズヘルパー、または属性)を調べなければならないということについてはわかりません。