2013-04-24 118 views
2

如何将json接受单个值作为数组?json接受单个值作为数组

此JSON抛出异常:

{ “代码”: “1”, “消息”: “OK”, “回应”:{ “合作伙伴”: { “ID “:”33“, ”name“:”“, ”clienttypeid“:”29“, ”logo“:”“, ”description“:”“, ”website“:”www.site.com “ } } }

此JSON解析正确的:

{ “代码”: “1”, “消息”: “OK”, “响应”:{ “伙伴”:[ { “ID”: “33”, “名”: “”, “clienttypeid”: “29”, “标志”: “”, “说明”: “”, “网站”:“WWW。 site.com“ }, { “ID”: “34”, “名”: “”, “clienttypeid”: “29”, “标志”: “”, “说明”: “”, “网站”:“WWW。 site.com” } ] }}

型号:

public class Partner 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
    public string clienttypeid { get; set; } 
    public string logo { get; set; } 
    public string description { get; set; } 
    public string website { get; set; } 
} 

public class Response 
{ 
    public List<Partner> partners { get; set; } 
} 

public class RootObject 
{ 
    public string code { get; set; } 
    public string message { get; set; } 
    public Response response { get; set; } 
} 

回答

2

如果你试图反序列化到List,使用数组表示法,即使有一个元素

{ 
    "code":"1", 
    "message":"OK", 
    "response":{ 
     "partners":[ 
      { 
       "id":"33", 
       "name":"", 
       "clienttypeid":"29", 
       "logo":"", 
       "description":"", 
       "website":"www.site.com" 
      } 
     ] 
    } 
} 
+0

服务器不返回数组符号[...]如果值是单 – 2013-04-24 13:04:21

1

我用Json.netpartners转换成数组,如果它是一个单一的对象

string Normalize(string json) 
{ 
    var jobj = JObject.Parse(json); 
    if (!(jobj["response"]["partners"] is JArray)) 
    { 
     jobj["response"]["partners"] = new JArray(jobj["response"]["partners"]); 
    } 
    return jobj.ToString(); 
} 
相关问题