如何将每个 Json 属性 写入没有内容的列表
How to write every Json property into a List without its content
我有一个这样的 .Json 文件:
{
"Main":{
"Funktion":{
"Sub1":"",
"Sub2":{
"something1":"",
"something2":"",
"something3":""
},
"Sub3":{
"something4":""
},
"Sub4":{
"something5":""
},
"Sub5":{
"something6":""
}
}
}
}
现在我想将每个“SubX”写入列表或数组,但每个 Sub 中没有文本。
所以它看起来像这样
输出:
Printed List:
"Sub1"
"Sub2"
"Sub3"
"Sub4"
"Sub5"
我已经通过转换为字符串并通过字符串句柄做到了。
现在我想知道是否有更优雅的解决方案。
一种仅检索 Funktion
子节点名称的方法如下:
JObject.Parse(json)["Main"]["Funktion"].Children().Select(x => ((JProperty)x).Name)
- 与
JObject.Parse
我们同样解析 json
- 使用
["Main"]["Funktion"]
我们遍历节点
- 对于
.Children()
我们要求子节点 (JToken
s)
- 使用
.Select
我们将 JToken
转换为 JProperty
以获得 Name
属性
我想强调的是这种方法很容易出错。它高度依赖于实际结构。为了使其更健壮,请考虑使用 TryGetValue
而不是索引运算符。
我有一个这样的 .Json 文件:
{
"Main":{
"Funktion":{
"Sub1":"",
"Sub2":{
"something1":"",
"something2":"",
"something3":""
},
"Sub3":{
"something4":""
},
"Sub4":{
"something5":""
},
"Sub5":{
"something6":""
}
}
}
}
现在我想将每个“SubX”写入列表或数组,但每个 Sub 中没有文本。
所以它看起来像这样
输出:
Printed List:
"Sub1"
"Sub2"
"Sub3"
"Sub4"
"Sub5"
我已经通过转换为字符串并通过字符串句柄做到了。 现在我想知道是否有更优雅的解决方案。
一种仅检索 Funktion
子节点名称的方法如下:
JObject.Parse(json)["Main"]["Funktion"].Children().Select(x => ((JProperty)x).Name)
- 与
JObject.Parse
我们同样解析 json - 使用
["Main"]["Funktion"]
我们遍历节点 - 对于
.Children()
我们要求子节点 (JToken
s) - 使用
.Select
我们将JToken
转换为JProperty
以获得Name
属性
我想强调的是这种方法很容易出错。它高度依赖于实际结构。为了使其更健壮,请考虑使用 TryGetValue
而不是索引运算符。