c#如何反序列化json数组

时间:2014-12-03 11:51:38

标签: c# .net httpwebrequest javascriptserializer

在C#中我收到一个json回复:

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
     var result = streamReader.ReadToEnd();
     ...
}

结果的值是:

"[\"[{\\\"retcode\\\":0}]\"]"

现在,如果我尝试将其反序列化为我的对象:

var myobj = js.Deserialize<List<CustomerReturnCode>>(result);

其中:

public class CustomerReturnCode
{
    public string retcode { get; set; }
}

我收到以下错误:

"Cannot convert object of type 'System.String' to type 'CustomerReturnCode'"}

如何反序列化响应类型? (它是一个数组:在这个例子中它只有一个项目)

2 个答案:

答案 0 :(得分:0)

您的Web服务正在返回一个数组数组。你不能直接反序列化,因为JavascriptSerializer不知道如何做到这一点。

从讨论here开始,可以使用JArray使用自定义JsonConverter类来完成。

或者我想如果您有权修改Web服务,请将其更改为以不同的格式返回对象。

答案 1 :(得分:-1)

   var json="[\"[{\\\"retcode\\\":0}]\"]";
    Dynamic CRC= new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<CustomerReturnCode >(json);