【问题标题】:ASP.NET JavaScriptSerializer Deserialize not returning resultsASP.NET JavaScriptSerializer 反序列化不返回结果
【发布时间】:2020-03-10 18:29:05
【问题描述】:

我正在向我的客户的新 API 发帖,该 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。 结果字符串在上面:然后将其反序列化到结构中:

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

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

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

【问题讨论】:

  • 我的回答能解决你的问题吗?

标签: asp.net json serialization


【解决方案1】:

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

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

然后将Deserialize JSON 转为ApiResult 即可得到status,如下:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多