如何将每个 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() 我们要求子节点 (JTokens)
  • 使用 .Select 我们将 JToken 转换为 JProperty 以获得 Name 属性

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