2014-02-28 60 views
1

以下id我的一段代码,它反序列化Json字符串。不能反序列化Json数组到类型字符串

response = "{\"success\":\"yes\",\"error\":\"\",\"message\":\"\",\"arguments\":[{\"id\":\"72820\",\"rowNo\":\"1\",\"userId\":\"40\",\"entityId\":\"3486\",\"value\":\"search Panel\",\"typeCategory\":\"3\"}]}"; 

     erpAPIResponse basicResponse = JsonConvert.DeserializeObject<erpAPIResponse>(response); 

结果是被反序列化到erpAPIResponse中的JSON字符串。

我erpAPIResponse如下:

public string success { get; set; } // getting and setting the success 
    public string error { get; set; } // getting and setting the error 
    public string message { get; set; } // getting and setting the message 
    public string arguments { get; set; } // getting and setting the arguments 
    // public string result { get; set; } 

我必须通过JSON林特验证JSON和跟它它是有效的JSON字符串。那么为什么我得到这个错误?

回答

2

当你的JSON结构如下图所示:

{ 
    "success": "yes", 
    "error": "", 
    "message": "", 
    "arguments": [ 
     { 
      "id": "72820", 
      "rowNo": "1", 
      "userId": "40", 
      "entityId": "3486", 
      "value": "search Panel", 
      "typeCategory": "3" 
     } 
    ] 
} 

在这里,你不能反序列化arguments数组中的字符串。所以,你需要重新定义erpAPIResponse类象下面这样使用json2csharp工具:

public class erpAPIResponse 
{ 
    public string success { get; set; } 
    public string error { get; set; } 
    public string message { get; set; } 
    public List<Argument> arguments { get; set; } 
} 

public class Argument 
{ 
    public string id { get; set; } 
    public string rowNo { get; set; } 
    public string userId { get; set; } 
    public string entityId { get; set; } 
    public string value { get; set; } 
    public string typeCategory { get; set; } 
} 

现在你应该没有问题,你原来的语句反序列化:

response = "{\"success\":\"yes\",\"error\":\"\",\"message\":\"\",\"arguments\":[{\"id\":\"72820\",\"rowNo\":\"1\",\"userId\":\"40\",\"entityId\":\"3486\",\"value\":\"search Panel\",\"typeCategory\":\"3\"}]}"; 

erpAPIResponse basicResponse = JsonConvert.DeserializeObject<erpAPIResponse>(response); 
+0

我已经试过你的代码,但仍没有运气 –

+0

我想在字符串中的参数,然后我将再次反序列化 –

+0

我已成功反序列化上面的代码。你能否指出你卡住的具体错误? –