JSON.NETを使用してHTTPクエリからJSON応答を逆シリアル化していますが、問題が残っています。以下に示すように、応答は、同じプロパティの下のオブジェクトの2種類を送ることができるからだ。同じプロパティ名で異なるオブジェクトを持つJSONを逆シリアル化する
第一ケースのサンプル(最も一般的):
{
"type": "myType",
"tid": 4,
"action": "myAction",
"method": "myMethod",
"result": {
"success": true,
"total": 4,
"records": [
{
"id": 4,
"nome": "PRIMEIRO NOME",
"sigla": "PN"
},
{
"id": 1974,
"nome": "SEGUNDO NOME",
"sigla": "SN"
},
{
"id": 2584,
"nome": "TERCEIRO NOME",
"sigla": "TN"
},
{
"id": 1170,
"nome": "QUARTO NOME",
"sigla": "QN"
}
]
}
}
第二ケースのサンプル(まれ):
{
"type": "myType",
"tid": 3,
"action": "myAction",
"method": "myMethod",
"result": [
{
"id": 4,
"nome": "PRIMEIRO NOME",
"sigla": "PN"
},
{
"id": 1974,
"nome": "SEGUNDO NOME",
"sigla": "SN"
},
{
"id": 2584,
"nome": "TERCEIRO NOME",
"sigla": "TN"
},
{
"id": 1170,
"nome": "QUARTO NOME",
"sigla": "QN"
}
]
}
私は第一ケースのためのデータを受信するために、これらのクラスを使用してきた
:
Public Class Record
Public Property id As Integer
Public Property nome As String
Public Property sigla As String
End Class
Public Class Result
Public Property success As Boolean
Public Property total As Integer
Public Property records As Record()
End Class
Public Class Response
Public Property type As String
Public Property tid As Integer
Public Property action As String
Public Property method As String
Public Property result As Result
End Class
だからそれは時にうまく働きましたこの文を使用して第一ケースJSONの直列化復元、:第二ケースJSONを受信したときに
Dim myResponse = JsonConvert.DeserializeObject(Of Response)(myJsonString)
しかし、それはその性質結果タイプ結果のオブジェクトプロパティでタイプレスポンス、店舗のオブジェクトを作成します空のままにしておき、私が検索する必要があったデータはどこにも保存されません。
私はそれがデータの異なるセット、この方法のための場所を持っているので、私はクラスの応答を変更する必要があることを考え:
Public Class Response
Public Property type As String
Public Property tid As Integer
Public Property action As String
Public Property method As String
Public Property result As Result
Public Property resultRecords As Record()
End Class
質問、そして、これです:どのように私はJsonConvertを伝えることができます保存するかどうかプロパティのデータResponse.resultのタイプ(上記の1番目のサンプルの場合)またはResponse.resultRecords 2番目のケースでは?
ありがとうございました!
'tid'はタイプを示していますか?意味は、最初のものはすべて「4」で、2番目のものはすべて「3」ですか? – Plutonix
は残念ながらありません、@Plutonixは、 'tid'は、「トランザクションID」ということであるインデックスとペアPOSTDATAもJSONであると増分TID値を送信する必要があります彼らの元の要求と応答を。しかし、助けてくれてありがとう! – VBobCat