![](/img/trans.png)
[英]Newtonsoft Json.NET Deserialize Setting Only Values in Json String
[英]Deserialize Dynamic Json string using Newtonsoft JSON.NET
我有一个JSON字符串,我从Facebook API获得,其中我有一个节点,其名称根据其内容而变化,例如一段时间它是45,或58等。它可以是任何数字。 我想要它的价值。 怎么弄? 例:
{
"data": [
{
"id": "1492292372_10201810786059989",
"created_time": "2014-04-05T09:00:54+0000"
},
{
"id": "1492292372_10201804679827337",
"created_time": "2014-04-04T07:29:07+0000"
},
{
"id": "1492292372_10201804649306574",
"created_time": "2014-04-04T07:10:33+0000"
},
{
"id": "1492292372_10201801316823264",
"created_time": "2014-04-03T18:31:50+0000"
},
{
"id": "1492292372_10201798962284402",
"created_time": "2014-04-03T06:24:47+0000"
},
{
"message_tags": {
"0": [
{
"id": "1492292372",
"name": "Yawar Sohail",
"type": "user",
"offset": 0,
"length": 12
}
],
"15": [
{
"id": "1489845168",
"name": "Zeeshan Anjum",
"type": "user",
"offset": 15,
"length": 13
}
]
},
"id": "1492292372_10201796274777216",
"created_time": "2014-04-02T17:57:05+0000"
},
{
"id": "1492292372_10201794080482360",
"created_time": "2014-04-02T07:26:23+0000"
},
在message_tags里面有两个节点[0和15],它们根据它们的偏移值动态地改变。 我想要这些节点中的名称,类型和ID。
您可以将JSON反序列化为ExpandoObject :
var converter = new ExpandoObjectConverter();
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json, converter);
它在运行时动态地向您的对象添加成员,并允许您按照此答案中的描述迭代它们:
foreach (var prop in obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
Console.WriteLine("Name: {0}, Value: {1}",prop.Name, prop.GetValue(obj,null));
}
这样,您可以迭代obj.message_tags
以获取各个消息,并分别获取所有详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.