如何从json字符串中读取数组中的属性名称?

时间:2013-08-25 19:25:14

标签: c# json json.net

以下是我收到的数据列表,属性名称可能不同;

{"data":"[
    {   
        "id":"1",
        "name":"aa",
        "email":"aa@aa.com",
        "address":"11"
    },
    {   
        "id":"2",
        "name":"bb",
        "email":"bb@bb.com",
        "address":"22"
    }
]"}

这是我的c#代码

我在第3行遇到错误。 Unable to read json data. Check the url you typed.Invalid cast from 'System.String' to 'Newtonsoft.Json.Linq.JObject'.

 var jsonStr = wc.DownloadString(url);
 JToken outer = JToken.Parse(jsonStr);
 JObject inner = outer["data"].Value<JObject>();

 List<string> keys = inner.Properties().Select(p => p.Name).ToList();

我的输出怎么样这样;

ID
命名
EMAL
地址

如果我还考虑n级数组,例如address > streetaddress > postcode

,那就太棒了

非常感谢。

1 个答案:

答案 0 :(得分:5)

var jObj = JObject.Parse(json);
var props = jObj["data"][0].Select(x => ((JProperty)x).Name).ToList();

BTW:你的json不对,应该是这样的

{data:[
 { "id":"1", 
        "name":"aa",
        "email":"aa@aa.com",
        "address":"11"
    },
    {"id":"2",
        "name":"bb",
        "email":"bb@bb.com",
        "address":"22"
    }
]}

查看问题中"之后的data: