2012-01-01 151 views
2

我有一个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" 
      }, 
+0

使用JavascriptSerializer:你可以传递一个字符串并返回一个对象。从那里访问返回对象的属性并获取h。 – frenchie 2012-01-01 21:15:21

+0

我刚试过。谢谢 – kankele 2012-01-01 22:15:21

回答

0

我更愿意认为JSON纯粹作为序列化对象的 - 第一个和最后一件事,我想用它做是将其反序列化为我随后使用的对象。

我不能告诉你这样做在C#中的最佳方式,但我已经使用JSON.NET

JSON.NET也将让你(引自网站)好运气“的LINQ to JSON是好的对于只想从JSON获取值的情况,您没有要序列化或反序列化的类,或者JSON与您的类完全不同,并且需要手动读取和写入对象。LINQ to JSON允许您轻松地在.NET中读取,创建和修改JSON。“,这听起来像您正在尝试做的事情。我从来没有尝试过,但如果你所要做的只是从长字符串中获取一段数据,那么这听起来像是一个很好的选择。

8

使用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"); 
+0

感谢您的信息我会尝试 – kankele 2012-01-01 22:14:13

+0

如何检查o [“实体”] [“媒体”]是否存在? – kankele 2012-01-01 22:32:58

+0

如果内部有多个模块,我如何查看'media'。 – Si8 2017-01-27 19:00:28