使用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
(包含View
, Product
和Offer
属性)的引用,您可以获取其包含JProperty
的名称,如下所示:
JProperty parentProp = (JProperty)jObject.Parent; string name = parentProp.Name; // "Info"