jsonの応答を次の形式で返すwebserviceを呼び出しています。動的に変化するjsonファイルをC#で解析する
{
"parent":
{
"child": {
"key1": value1,
"key2": value2
}
}
}
上記の応答は、親に1人の子供がいる場合です。しかし、親に複数の子がある場合に示すように、応答があり、そして:
{
"parent": [
{
"child": {
"key1": "value1",
"key2": "value2"
}
},
{
"child": {
"key1": "value1",
"key2": "value2"
}
}
]
}
つ以上の子要素が存在する場合にこのように、親がJArrayであり、唯一の子要素がある場合には、親JObjectです。
今、JObjectのときにインデックスのエラーをスローするので、子要素の内容を動的に解析するのが難しいです。
誰かがJObjectとJArrayの両方で内容をどのように解析できるか説明できますか?
現在のところ、親タグをJObject/JArrayであるかどうか、それに対応して解析しているかどうかをチェックしていますが、それは長くて退屈なプロセスです。
他の方法がありますか?続き
は、私が今
if(jsonfile["parent"].getType() == "JObject")
{
string value1 = (string)jsonfile["parent"]["child"]["key1"]
}
else
{
string value1 = (string)jsonfile["parent"][0]["child"]["key1"];
}
使用していたコード私達は親がJOBJECTかJArrayであるかどうかを確認せずにVALUE1を得ることができ、他の方法がありますか?
あなたがいる場合は、json.netをタグ付けそれを実際に使用すると、jsonをオブジェクトに変換して処理するほうがはるかに簡単です(http://www.newtonsoft.com/json/help/html/DeserializeObject.htm)。この質問も参照してください:https://stackoverflow.com/questions/4535840/deserialize-json-object-into-dynamic-object-using-json-net – Esko
childXプロパティは変更されません。私は間違いを訂正しました。 – Dipumon
JSONをc#クラスまたは?クラスに解析しますか? –