gpt4 book ai didi

c# - 使用 Newtonsoft JSON.NET 反序列化动态 Json 字符串

转载 作者:可可西里 更新时间:2023-11-01 03:06:35 25 4
gpt4 key购买 nike

我有一个从 Facebook API 获取的 JSON 字符串,其中我有一个节点,其名称根据其内容而变化,例如有时是 45 或 58 等。它可以是任何数字。我想要它的值(value)。如何获得?示例:

{
"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);

它在运行时动态地将成员添加到您的对象,并允许您迭代它们 as described in this answer :

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 来获取各个消息,并分别获取它们的所有详细信息。

关于c# - 使用 Newtonsoft JSON.NET 反序列化动态 Json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22906010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com