当可变数量的条目时反序列化Json

时间:2013-12-17 01:09:10

标签: c# json.net deserialization

所以我有一个看起来像这样的Json文件

{
"Item":[
 "name": {
   "type": "value",
   "type2": "value",
   "0":{
     "InnerType1":"innerValue",
     "InnerType2":"innerValue",
     "InnerType3":"innerValue",
   },
   "1":{
     "InnerType1":"innerValue",
     "InnerType2":"innerValue",
     "InnerType3":"innerValue",
   }
 },"name2": {
   "type": "value",
   "type2": "value",
   "0":{
     "InnerType1":"innerValue",
     "InnerType2":"innerValue",
     "InnerType3":"innerValue",
   }
 },"name3": {
   "type": "value",
   "type2": "value",
   "0":{
     "InnerType1":"innerValue",
     "InnerType2":"innerValue",
     "InnerType3":"innerValue",
   },
   "1":{
     "InnerType1":"innerValue",
     "InnerType2":"innerValue",
     "InnerType3":"innerValue",
   },
   "2":{
     "InnerType1":"innerValue",
     "InnerType2":"innerValue",
     "InnerType3":"innerValue",
   }
 },
]
}

我的问题是“0”,“1”和“2”因为它们并不总是出现在我的数据中,也许有一次我会有42个这种类型的条目。 “0”,“1”和“2”获得完全相同的内部类型但不是相同的值。

所以任何人都有一个想法,因为我只有一个手动反序列,一个for迭代0到x,当我没有数字时停止,但它不是一个好主意。

谢谢你,祝你有个美好的一天

1 个答案:

答案 0 :(得分:0)

只需使用此功能,您无需担心Json密钥

 IDictionary<string, JToken> jsondata = JObject.Parse(json);

 foreach (KeyValuePair<string, JToken> innerData in jsondata) {
    Console.WriteLine("{0}=> {1}",innerData.Key, innerData.Value.ToString()); 
 }

JToken是JObject,JArray,JProperty的基类,因此JToken可以轻松处理这些类型