如何在不使用 foreach 循环的情况下获取 JObject 的第一个 child

How to get first child of JObject without using foreach loop

我需要获得 JObject 的第一个 child。 这就是我在第一次迭代后用 foreach 循环中断临时解决它的方法。

foreach (KeyValuePair<string, JToken> item in (JObject)json["stats"])
{
    // doing something with item
    break;
}

我想知道是否有更短的解决方案,例如 json["stats"][0](但是这种方式行不通)。

这不行吗?

(json["stats"] as JObject).Select(x =>
      {
            // do something with the item;

            return x;
      }).FirstOrDefault();

由于 JObject 实现了 IDicionary<string, JToken>,您可以使用 Linq 扩展方法。

 IDictionary<string, JToken> json = new JObject();
 var item = json.First();

可能有几种方法,但这里有一个:

JToken prop = obj["stats"].First;

如果你知道它是 JProperty:

JProperty prop = obj["stats"].First.ToObject<JProperty>();