在JObject (Newtonsoft.Json)中处理字典的问题

本文关键字:处理 字典 问题 JObject Newtonsoft Json | 更新日期: 2023-09-27 17:50:21

我有这个json对象。

{  
   "Apparel":[  
      "Athlete",
      73
   ],
   "Freeze":[  
      "Coin",
      19,
      "Fur",
      37,
      "Grade",
      72
   ],
   "Lobster":[  
      "Node",
      18
   ]
}

我在一个字符串中读取它,并将其转换为一个JObject,如下所示:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
JObject myobj = JObject.Parse(mystr);

我该如何获取所有的键{"Apparel", "Freeze", "Lobster"} ?


如果我这样做:

    List<JToken> mylist = myobj.ToList<JToken>();
    int l = mylist.Count;
    for (int i = 0; i < l; i++)
    {
        Debug.WriteLine(mylist[i]);
    }

它打印:

    "Apparel": [
      "Athlete",
      73
    ]"Freeze": [
      "Coin",
      19,
      "Fur",
      37,
      "Grade",
      72
    ]
    "Lobster": [
      "Node",
      18
    ]

{"Apparel", "Freeze", "Lobster"}值不是恒定的,可能会发生变化。我知道我可以做一些正则表达式补丁来从字符串中得到我想要的,但我不想走那条路,除非它是最后的手段。请帮助。

在JObject (Newtonsoft.Json)中处理字典的问题

您可以使用jobject属性方法,

IList<string> keys = parent.Properties().Select(p => p.Name).ToList();

from here

如何从Json.NET获得键列表?