【问题标题】:Deserialize JSON Object .Net反序列化 JSON 对象 .Net
【发布时间】:2014-02-23 22:02:31
【问题描述】:

我正在尝试反序列化以下 JSON 对象:

"{\"results\":[{\"isError\":true,\"result\":null,\"messages\":[{\"type\":0,\"text\":\"Legal Entity is required when a Cost Center Code is specified: External Code 1 = cc3f25a7-0e8a-4e1c-8e18-c83c520ff3d7;\"}]}],\"isError\":true,\"sessionId\":null,\"tk\":null,\"tp\":null}"

我有以下课程: [数据合约]

public class BigCenterResponse
{
    [DataMember(Name = "isError")]
    public bool IsError { get; set; }

    [DataMember(Name = "sessionId")]
    public string SessionID { get; set; }

    [DataMember(Name = "results")]
    public List<Result> Responses { get; set; } 

}

[DataContract]
public class Message
{
    [DataMember(Name = "type")]
    public int Type { get; set; }

    [DataMember(Name = "text")]
    public string Text { get; set; }
}

[DataContract]
public class Result
{
    [DataMember(Name = "isError")]
    public bool IsError { get; set; }

    [DataMember(Name="messages")]
    public List<Message> Messages { get; set; }

}

以及以下实现:

   using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
    {
        var resp = reader.ReadToEnd();
        var serializer = new JavaScriptSerializer();
        var obj = serializer.Deserialize<BigCenterResponse>(resp);
        obj.Responses = serializer.Deserialize<List<Result>>(resp);
        return obj;
    }

我能够正确设置 IsError,但未填写响应。我试过反序列化 BigCenterResponse 并尝试分别反序列化结果部分(如上所示)。两者似乎都不起作用。

【问题讨论】:

    标签: .net json javascriptserializer


    【解决方案1】:

    JavaScriptSerializer 不使用 DataMemberDataContract 属性。但它不区分大小写。所以public int type { get; set; }public int Type { get; set; }之间没有区别


    public class Message
    {
        public int Type { get; set; }
        public string Text { get; set; }
    }
    
    public class Result
    {
        public bool IsError { get; set; }
        public List<Message> Messages { get; set; }
    }
    
    public class BigCenterResponse
    {
        public List<Result> Results { get; set; }
        public bool IsError { get; set; }
        public string SessionId { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      相关资源
      最近更新 更多