在Json.Net中获取JObject的名称

时间:2014-06-02 18:00:51

标签: c# linq json.net

我的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);

有更好的方法吗?

1 个答案:

答案 0 :(得分:10)

在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模拟JObject中包含的名称 - 值对。每个JObject都有一个JProperties的集合,它们是其子集,而每个JProperty都有一个Name和一个子集Value

因此,假设您引用了最里面的JObject(包含ViewProductOffer属性),您可以获取其包含的{{ {1}}像这样:

JProperty