VB.NETのHTTPリクエストを使用して、Webサービスからデータを読み込みます。これは、データをこのように送信するために使用:空の配列を返す不正なJsonを直列化解除する
[
{
"id": 7532,
"nome": "LABOR INC.",
"isClient": false,
"personality": {
"id": 2,
"value": "CORPORATION"
},
"registryNumbers": [
{
"id": 9378,
"number": "20786790174"
}
],
"personality_id": 2
},
{
"id": 7537,
"nome": "JOSE SILVA",
"isClient": false,
"personality": {
"id": 1,
"value": "PERSON"
},
"gender": {
"id": 1,
"value": "MALE"
},
"cityOfBirth": {
"id": 355030,
"value": "SAO PAULO"
},
"nationality": {
"id": 85,
"value": "BRAZILIAN"
},
"registryNumbers": [
{
"id": 9383,
"number": "03217495388"
}
],
"personality_id": 1
}
]
(「性別」や企業のための「cityOfBirth」など)未使用フィールドが省略されたので、それはOKでした。いくつかの日以来、しかし、それはこのような空の配列([]
)、としてこれらのフィールドを送り返すために始めた:
{
"id": 7532,
"nome": "LABOR INC.",
"isClient": false,
"personality": {
"id": 2,
"value": "CORPORATION"
},
"gender": [],
"cityOfBirth": [],
"nationality": [],
"registryNumbers": [
{
"id": 9378,
"number": "20786790174"
}
],
"personality_id": 2
}
そして、これらではないので、そのためには、直列化復元のクラスで運命のプロパティをミスフィット(とすることができます列挙型/配列ではなく単一のオブジェクトです。
私の質問:私はnullを/何もないとして、これらの([]
)をデシリアライズするために、私のクラスに追加することができますいくつかのデシリアライゼーション拡張子または属性がありますか? VB.NETの場合は特に感謝しますが、C#も読んで適応させることができます。
つまり、配列が単一のオブジェクトを必要とするプロパティに "強制"され、この時点で適切な処理を行うと、コードを停止させる方法を知りたいと思います。
「不正な形式のjson」ではありません。それは完全に有効です。それはそれを扱うことができないあなたの構造です。内部のデリライゼーションを無効にできるものがない場合は、一時構造にデコードし、空の配列を変更して必要なものに変更してからコードにフィードします。 –
ありがとう、@ MarcB。 '[]'はJSONでnull値が表現される方法でもありますか? – VBobCat
番号。 '[]'は空の配列です。それはnullではありません。 jsonのヌル(実際にはJavaScriptのみ)は、文字通り「ヌル」という言葉です。もしあなたが100%**可能ならば、 '[]'がjsonの他のどこにでも現れることは決してありません。デコードする前にjsonに対して単純な '[] - > null'文字列置換を行うことができます。 –