我有一个动态JSON文档,但是出于这个问题,请想象它类似于以下内容:
{
"name": "Jungle Gym",
"age": 25,
"favorite_color": "#ffa500",
"gender": "male",
"location": {
"city": "Seattle",
"state": "WA",
"citystate": "Seattle, WA"
},
"pets": [
{
"type": "dog",
"name": "Foo",
"food": [
"chicken",
"beef",
"fish"
]
},
{
"type": "cat",
"name": "Bar"
}
]
}
如何获取文档中所有属性名称的列表?我可以获取顶级属性名称(“名称”,“年龄”,“ favorite_color”,“性别”,“位置”,“宠物”),但是我需要将所有属性名称简化为“ location.state”或“ pets.food”,如果属性/对象存在,则更深。 我开始使用以下内容:
var model = JsonConvert.DeserializeObject<JObject>(json);
foreach (JProperty property in model.Properties())
{
if (property.Value.Type == JTokenType.Object)
{
foreach (var tmp in property.Children())
{
Console.WriteLine(tmp.SelectToken().);
}
}
}
,但是似乎无法导航到顶级以外的对象中以获取下一级别的属性(例如,位置属性)。理想情况下,我希望派生的属性名称列表包括该属性的完整路径,例如location.city
,location.state
等,而不是仅包含属性名称,例如city
,state
。
如何获取JSON文档中可能具有不同嵌套级别的所有属性的列表?