在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'"}
如何反序列化响应类型? (它是一个数组:在这个例子中它只有一个项目)
答案 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);