在.net应用程序中解析json的方法

vbN*_*bie 2 visual-studio-2010 json.net

我试图解析来自httpwebrequest fetch的JSON响应,并且在阅读帖子之后有点不确定,对于我来说最好的方法是什么.我访问facebook图表api,并想解析给定帖子的所有字段.

"data": [
  {
     "id": "17xxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxx",
     "from": {
        "name": "Lxxxxxx",
        "category": "Sports league",
        "id": "17xxxxxxxxxxxxx"
     },
     "picture": "http://external.ak.fbcdn.net/safe_image.php?d=AQB4GscSy-2RHY_0&w=130&h=130&url=http\u00253A\u00252F\u00252Fwww.ligabbva.com\u00252Fquiz\u00252Farchivos\u00252Fbenzema-quiz-facebook.png",
     "link": "http://www.xxxxxva.com/quiz/index.php?qid=34",
     "source": "http://www.lxxxxva.com/modulos/redirectQuiz.php?name=benzema&q=34&time=1312827103",
     "name": "DEMUESTRA CU\u00c1NTO SABES SOBRE... BENZEMA",
     "caption": "www.xxxxxva.com",
     "description": "Demuestra cu\u00e1nto sabes sobre Karim Benzema, delantero del Real Madrid.",
     "icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yj/r/v2OnaTyTQZE.gif",
     "type": "video",
     "created_time": "2011-08-08T18:11:54+0000",
     "updated_time": "2011-08-08T18:11:54+0000",
     "likes": {
        "data": [
           {
              "name": "Jhona Arancibia",
              "id": "100000851276736"
           },
           {
              "name": "Luis To\u00f1o",
              "id": "100000735350531"
           },
           {
              "name": "Manuel Raul Guerrero Cumbicos",
              "id": "100001485973224"
           },
           {
              "name": "Emmanuel Gutierrez",
              "id": "100000995038988"
           }
        ],
        "count": 127
     },
     "comments": {
        "count": 33
     }
  },
  {
     "id": "17xxxxxxxxxxxxxxxx_xxxxxxxxxxxxx",
     "from": {
        "name"
Run Code Online (Sandbox Code Playgroud)

并非所有字段都会存在,但我需要能够遍历每个帖子.

更新:

我收到以下行的错误:

dim serializer as new jsonSerializer()
dim jsArray as JArray = directCast(serializer.Deserialize(New JsonTextReader _
     (New StringReader(responseData))), JArray)
Run Code Online (Sandbox Code Playgroud)

错误:无法转换newtonsoft.json.linq.jobject类型的对象以键入newtonsoft.json.ling.jobject

sta*_*k72 5

你可以使用newtonsoft JSON反序列化器

您将使用每个属性及其子属性设置数据实体,然后使用JSON属性将实体映射到属性

来自我正在做的类似事情的示例代码:

[JsonObject(MemberSerialization.OptIn)]
    public class Data
    {
        public override string ToString()
        {
            return Name;
        }

        [JsonProperty(PropertyName = "id")]
        public string Id{ get; set; }


    }

public Data DeserialiseData()
        {
            var data = JsonConvert.DeserializeObject<Data>("JSON string");

    return data;
}
Run Code Online (Sandbox Code Playgroud)

更多信息可以在这里找到