使用JSON.NET&选择节点LINQ

时间:2013-07-16 09:02:40

标签: json linq parsing

我得到这个JSON(我把它写成XML):

<statuses>
    <metadata>
        <result_type>recent</result_type>
        <iso_language_code>tl</iso_language_code>
    </metadata>
    <created_at>Tue Jul 16 07:56:04 +0000 2013</created_at>
    <user>
        <id>1234</id>
        <id_str>4567</id_str>
        <name>Marco</name>      
    </user>
</statuses> 

(这就是它的样子):

{
    "statuses":[
    {
        "metadata":{
            "result_type":"recent",
            "iso_language_code":"tl"
        },
        "created_at":"Tue Jul 16 07:56:04 +0000 2013",
        "user":{
            "id":366581342,
            "id_str":"366581342",
            "name":"Marco Dalla Piazza"
        }
    }]
}       

我要提取字段created_atnameuser下)。
我怎么能用JSON.NET库和LINQ来做呢?

尝试(名称):

JObject xDoc = JObject.Parse(objectText);
var leo = xDoc.Descendants("user").Select(n => new
    name = n.Element("name").Value
{
}).First(); 

但似乎我没有LINQ方法(正如我在LINQ to XML中所做的那样)。

1 个答案:

答案 0 :(得分:1)

您应该可以使用LINQ to JSON执行此任务:

JObject o = JObject.Parse(objectText);
var result =
    o["statuses"].Select(x => new { CreatedAt = (DateTime)x["created_at"],
                                    Name = (string)x["user"]["name"] });