如何将每个 Json 属性写入没有其内容的列表
Posted
技术标签:
【中文标题】如何将每个 Json 属性写入没有其内容的列表【英文标题】:How to write every Json property into a List without its content 【发布时间】:2021-12-12 13:31:11 【问题描述】:我有一个这样的 .Json 文件:
"Main":
"Funktion":
"Sub1":"",
"Sub2":
"something1":"",
"something2":"",
"something3":""
,
"Sub3":
"something4":""
,
"Sub4":
"something5":""
,
"Sub5":
"something6":""
现在我想将每个“SubX”写入一个列表或数组,但每个子中没有文本。
所以它看起来像这样
输出:
Printed List:
"Sub1"
"Sub2"
"Sub3"
"Sub4"
"Sub5"
我已经通过转换为字符串并通过字符串句柄实现了它。 现在我想知道这个问题是否有更优雅的解决方案。
【问题讨论】:
你使用的是 Json.Net 还是 System.Text.Json? Json.net。我编辑了它 在 Json.Net 的情况下,您可以获得这样的名称:JObject.Parse(json)["Main"]["Funktion"].Children().Select(x => ((JProperty)x).Name)
【参考方案1】:
仅检索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 属性写入没有其内容的列表的主要内容,如果未能解决你的问题,请参考以下文章
在 PowerShell 中将没有展平列表的 JSON 数组写入文件