2015-07-20 47 views
-1

请帮我从这个JSON在C#中解析数组:如何用Newtonsoft.Json解析json数组?

{ 
     "error_code":0, 
     "response": 
     { 
      "17": 
       { 
        "id":"17","name":"Books" 
       }, 
      "21": 
       { 
        "id":"21","name":"Movies" 
       }, 
      "13": 
       { 
        "id":"13","name":"Cafe" 
       }, 
      "5": 
       { 
        "id":"5","name":"Music" 
       }, 
      "49": 
       { 
        "id":"49","name":"Theatres" 
       } 
     } 
    } 

我使用Newtonsoft.Json库

+0

这不是一个数组,它的哪些属性命名,而这恰好是数字的字符串对象。 – Jite

回答

1

这不是一个JSON阵列 - 它只是一个JSON 对象这恰好具有response对象属性的编号。

你可以将它解析为一个JObject,或将其反序列化到这样一类:

public class Root 
{ 
    public int ErrorCode { get; set; } 
    public Dictionary<string, Entry> Response { get; set; } 
} 

public class Entry 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
} 

... 

Root root = JsonConvert.DeserializeObject<Root>(json); 
+0

谢谢,乔恩!当我在Root类中将ErrorCode重命名为“error_code”并将条目重命名为“response”时,它就起作用了! – dvlpr

+0

@dvlpr:'Entries'应该是'Response',但应该是你所需要的 - 我期望Json.NET将error_code映射到ErrorCode。如果没有,您可以始终应用适当的命名属性。 –