如何使用 JSON.net 枚举嵌套的 JObject?



我有一个字符串化的json对象,我使用JObject.Parse解析并得到下面的结果-

{{
"payload": {
"firstName": "John",
"lastName": "Doe"
}
}}

这是我的输入 -

"{ rn"payload": {rnt"firstName":"John", rnt"lastName": "Doe"rn }}"

额外的括号是开始,结束由解析器添加。我想遍历此对象并显示名字和姓氏的键值。

foreach (var property in jobject)
{
Console.WriteLine("  {0}: {1}", property.Name, property.Value);
}

但是,我不知道由于两个括号或由于嵌套结构,我无法进入内部属性。我尝试了一种递归方法来解析 json,但还没有成功。有人可以帮我吗?

如果你也想迭代所有嵌套对象,你可以做这样的事情:

var p = JObject.Parse(...);
foreach (var a in p.DescendantsAndSelf())
{
if (a is JObject obj)
foreach (var prop in obj.Properties())
if (!(prop.Value is JObject) && !(prop.Value is JArray))
Console.WriteLine("  {0}: {1}", prop.Name, prop.Value);
}

可以使用 LINQ 访问对象。如果不好,请将解析对象的部分添加到问题中。

yourobj["payload"].ToObject<YourObject>()

最新更新