【问题标题】:How to write every Json property into a List without its content如何将每个 Json 属性写入没有其内容的列表
【发布时间】: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)

标签: c# json linq json.net


【解决方案1】:

仅检索Funktion 子节点名称的一种方法如下:

JObject.Parse(json)["Main"]["Funktion"].Children().Select(x => ((JProperty)x).Name)
  • JObject.Parse 我们同样解析 json
  • 使用["Main"]["Funktion"],我们遍历节点
  • .Children() 我们要求子节点 (JTokens)
  • 使用.Select,我们将JToken 转换为JProperty,以便能够获得Name 属性

我想强调的是,这种方法容易出错。它高度依赖于实际结构。为了使其更健壮,请考虑使用TryGetValue 而不是索引运算符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多