JSON解析具有标识符的对象数组

时间:2014-08-28 21:56:47

标签: .net json

我需要解析的Json(使用json.net)是服务所调用的对象数组"标识符":

按标识符的消息数组的JSON表示。 messages array由字符串标识符键入的Message对象数组。

例如:

{  
   "messages":{  
      "349149733:-4:0:0":{  
         "name":"Fred",
         "text":"Body for test message.",
         "subject":"Test Message 1",
         "referenceId":"349149733"
      }
      "253413023:-4:0:0":{  
         "name":"Fred",
         "text":"Body for the next test message.",
         "subject":"Test Message 2",
         "referenceId":"253413023"
      }
      ....
   }
}

我有一个.NET对象,我知道它正确代表了消息('值'项" 349149733:-4:0:0"带有名称,文本属性等)但我似乎无法解析数组部分?

我想让json.net自动解析为一个集合类型对象,我可以简单地进行交互并获取每条消息。

2 个答案:

答案 0 :(得分:0)

我认为你的意思是这样的:

var xyz = JSON.parse('{"messages":{"349149733:-4:0:0":{ "name":"Fred","text":"Body for test message.",   "subject":"Test Message 1","referenceId":"349149733"}}}');
console.log(xyz.messages['349149733:-4:0:0']);

答案 1 :(得分:0)

Json.NET将能够将messages值序列化为IDictionary<string, Message>类型的对象。

JObject jsonObject = JsonConvert.DeserializeObject<JObject>(text);
IDictionary<string, Message> messages =
    jsonObject["messages"].ToObject<IDictionary<string, Message>>();

然后,您可以遍历字典条目(带键和Message的键值对),或单独使用值。