首页 > 解决方案 > ASP.NET JavaScriptSerializer 反序列化不返回结果

问题描述

我正在发布到我客户的新 API,它正在返回:

{"status":{"statusCode":1,"errorType":2,"errorCode":9000,"errorMessage":"System could not process your request"}}

注意:返回的 JSON 包含 '\"'

在我的 C# 代码中,我定义了一个结构:

public struct userStatusStruct
{
    public int statusCode { get; set; }
    public int errorType { get; set; }
    public int errorCode { get; set; }
    public string errorMessage { get; set; }
}

然后,在 C# 中使用

 loginResponse = (HttpWebResponse)request.GetResponse(); 
 ....
 var streamResponse = new StreamReader(loginResponse.GetResponseStream()
 ....
 var result = streamResponse.ReadToEnd();

我收到一个 statusCode.OK。结果字符串在上面: 然后将其反序列化到 Struct 中:

 var vs = new JavaScriptSerializer().Deserialize<DataClass.userStatusStruct>(result);

反序列化 userStatusStruct 包含 0 和 string.empty。

我以前做过很多次,但这一次我很困惑为什么它没有将结果反序列化为结构格式。

标签: asp.netjsonserialization

解决方案


您的 JSON 对 无效userStatusStruct,您需要定义另一个包含userStatusStruct属性的类:

public class ApiResult
{
    public userStatusStruct status { get; set; }
}

然后DeserializeJSON 到ApiResult,你可以得到status如下:

var apiResult = new JavaScriptSerializer().Deserialize<DataClass.ApiResult>(result);

var vs = apiResult.status;
var statusCode = vs.statusCode;
//the other properties

推荐阅读