私は次のJSONを持っています:
{
"aaaa": {
"name": "General Name",
"product": "book",
"host": "book.example.com",
"chapters": {
"bbbb": {
"name": "Chapter 1",
"page": "1",
"end_page": "25"
}
},
"categories" : {
"analysis":{
"Abbbb" : {
"name": "B Chapter",
"id" : "9001"
},
"Acccc" : {
"name": "C Chapter",
"id" : "9001"
},
"Adddd" : {
"name": "D Chapter",
"id" : "9001"
},
"Aeeee" : {
"name": "E Chapter",
"id" : "9001"
},
"Affff" : {
"name": "F Chapter",
"id" : "9001"
},
"Agggg" : {
"name": "G Chapter",
"id" : "9001"
}
},
"sources":{
"acks" : {
"name": "S. Spielberg",
"id" : "9001"
}
}
}
}
"yyyy": {
"name": "Y General Name",
"product": "Y book",
"host": "ybook.example.com",
...
}
"zzzz": {
"name": "Z General Name",
"product": "Z book",
"host": "zbook.example.com",
...
}
aaaa
、yyyy
、およびの値は、zzzz
任意の文字列にすることができ、任意の数を指定できます。
[aaaa|yyyy|zzz].categories.analysis
すべての値を抽出する必要があります。つまり、文字列を無視して、Dictionary<string, string>
オブジェクト名(例: Abbbb
、など) と ID で終了する必要があります。Acccc
name
例: [Abbbb, 9001] [Acccc, 9001] [Adddd, 9001] ... [Zaaaa, 9001]
私はこれにあまりにも長い間携わってきましたが、明らかな何かが欠けているように感じます。JSON.net とネイティブのシリアル化を試しました。これは、私が使用した他のすべての言語では簡単な作業です。
私はこのようなものに近づきました:
var ajsonObject = JsonConvert.DeserializeObject<dynamic>(jsonString);
var oasearch_categories = ajsonObject.aaaa.categories.analysis;
しかし、繰り返しaaaa
ますが、任意の文字列にすることができるので、それを動的に参照する方法がわかりません。