使用Linq在json.net中获取JObject的名称

我有一个JObject等于:

"Info": { "View":"A", "Product":"B", "Offer":"Offer1", "Demo":"body {background-color:red;} #box {border:dotted 50px red;}", "Log":false } 

如何返回对象的名称“Info”?

我目前正在使用Path属性,如下所示:

 jObject.Name = jObject.Path.Substring(jObject.Path.jObject('.') + 1); 

有一个更好的方法吗?

在JSON中,对象本身没有名称。 对象只是一个名称 – 值对集合的容器,以花括号开头和结尾。 所以你上面提到的是一个更大的JSON体系的片段。 必须有一个外部对象来包含它。 该外部对象具有名称为Info的属性,该属性的值是您引用的对象。

 { "Info": { "View":"A", "Product":"B", "Offer":"Offer1", "Demo":"body {background-color:red;} #box {border:dotted 50px red;}", "Log":false } } 

在Json.Net中, JObject模拟JSON对象, JProperty模拟JProperty包含的名称 – 值对。 每个JObject都有一个JObject集合,它们是它的子JProperty ,而每个JProperty都有一个Name和一个子JProperty ,它的Value

因此,假设您有对最内层JObject (包含ViewProductOffer属性)的引用,您可以获取其包含JProperty的名称,如下所示:

 JProperty parentProp = (JProperty)jObject.Parent; string name = parentProp.Name; // "Info"