获取JSON对象节点
问题描述:
我有一个JSON对象,我希望得到的值: 实体>媒体>尺寸>大>^h获取JSON对象节点
有没有办法得到它像XML - > Xpath的方法是什么?
这是额外的线路是无关紧要的质疑只是因为......
{
"created_at": "Sun, 01 Jan 2012 17:05:32 +0000",
"entities": {
"user_mentions": [
{
"screen_name": "nurdanterbiyik",
"name": "nurdan",
"id": 264782080,
"id_str": "264782080",
"indices": [
0,
15
]
}
],
"media": [
{
"id": 153522253777219584,
"id_str": "153522253777219584",
"indices": [
44,
64
],
"media_url": "http://p.twimg.com/AiFrrSmCMAAdEID.jpg",
"media_url_https": "https://p.twimg.com/AiFrrSmCMAAdEID.jpg",
"url": "http://t.co/ZwHN9gvO",
"display_url": "pic.twitter.com/ZwHN9gvO",
"expanded_url": "http://twitter.com/emelkiraac/status/153522253773025280/photo/1",
"type": "photo",
"sizes": {
"large": {
"w": 536,
"h": 800,
"resize": "fit"
},
答
我更愿意认为JSON纯粹作为序列化对象的 - 第一个和最后一件事,我想用它做是将其反序列化为我随后使用的对象。
我不能告诉你这样做在C#中的最佳方式,但我已经使用JSON.NET
JSON.NET也将让你(引自网站)好运气“的LINQ to JSON是好的对于只想从JSON获取值的情况,您没有要序列化或反序列化的类,或者JSON与您的类完全不同,并且需要手动读取和写入对象。LINQ to JSON允许您轻松地在.NET中读取,创建和修改JSON。“,这听起来像您正在尝试做的事情。我从来没有尝试过,但如果你所要做的只是从长字符串中获取一段数据,那么这听起来像是一个很好的选择。
答
使用JSON.NET有几种方法可以读取数据,而无需将JSON文本反序列化为对象。这里是一个简化的例子:
string json = @" {
""created_at"": ""Sun, 01 Jan 2012 17:05:32 +0000"",
""entities"": {
""media"": [{
""type"": ""photo"",
""sizes"": {
""large"": {
""w"": 536,
""h"": 800,
""resize"": ""fit""
}
}
}]
}
}
";
JObject o = JObject.Parse(json);
int h = (int)o["entities"]["media"][0]["sizes"]["large"]["h"];
int h2 = (int)o.SelectToken("entities.media[0].sizes.large.h");
使用JavascriptSerializer:你可以传递一个字符串并返回一个对象。从那里访问返回对象的属性并获取h。 – frenchie 2012-01-01 21:15:21
我刚试过。谢谢 – kankele 2012-01-01 22:15:21