C#でいくつかのAPIを使って作業していますが、404と200(!)のステータスコードでJSONに「エラー」が返されます。JSONの構造は異なるが、C#で同じ名前を逆シリアル化する
1)HTTPステータス200:
{ "Errors": "Duplicated" }
2)HTTPステータス200:
{ "Errors": {"some_key":"Invalid"} }
3)HTTPステータス404:
{ "Errors": "some_key1":["Invalid"], "some_key2":["Invalid"] }
1 - 文字列にマップ - OK 2 - Dictionary<string,string>
にマッピングされますが、文字列には割り当てられません 3 - それをModelState Dictionary<string,List<string>>
にマップOK。ステータスコードがdiffであるため(Json文字列の "Errors"の名前を変更し、それをdiffプロパティ名にマッピングします)。
唯一の問題は、両方とも同じHTTPステータスコードと同じノード名「エラー」で返されるため、ケース1と2の場合です。
誰かがこれらのケースで作業しましたか?どのようにそれらを処理するのですか?ケース2をちょうど文字列に変換するか、ケース1を辞書に入れて1,2,3 ..自動生成されたキーにするかのNetwon Json deserialzier設定はありますか?
他のアイデアはありますか?
乾杯
JTokenを最初に解析して「エラー」ノードがあるかどうかをチェックするという手法は私を助けました。 http://www.newtonsoft.com/json/help/html/SerializingJSONFragments.htmしかし、このタイトな私はNewtonJsonです。 –