如何在c#中反序列化json响应

时间:2018-01-18 00:46:21

标签: c# asp.net

我正在尝试在c#中反序列化以下json响应。

回应:

  

{       “状态”:是的,       “消息”:“成功”,       “数据”:[           {               “message”:“MSISDN:01120511377 \ nLine状态:ACTIVE \ nPlan:B149 \ n \ n黑色计数器:45 GB 643m,900sms \ nLyt:   158 \ n \ n其他用法:RM80.00 \ n“           },           {               “消息”:“\ n初次收费\ n每月收费:RM149.00 \ n其他用途:RM80.00 \ n \ n总金额:RM-158.00”           }       ]}

我设法获得statusmessage,但无法获得data数组。

这些是我的课程:

[DataContract]
public class RecMessage
{
    [DataMember]
    public string status { get; set; }
    [DataMember]
    public string message { get; set; }
    [DataMember]
    public message data { get; set; }
}
[DataContract]
public class message
{
    [DataMember]
    public string messages { get; set; }
}

但是,data - > messages始终为null

更新:已解决!!

这些课程应该是这样的:

[DataContract]

public class RecMessage
{
    [DataMember]
    public string status { get; set; }
    [DataMember]
    public string message { get; set; }
    [DataMember]
    public messages[] data { get; set; }
}
[DataContract]
public class messages
{
    [DataMember]
    public string message { get; set; }
}

2 个答案:

答案 0 :(得分:1)

你的课程应该是这样的:

public class RecMessage
{
    public bool Status { get; set; }
    public string Message { get; set; }
    public List<MessageContent> Data { get; set; }
}

public class MessageContent
{
    public string Message { get; set; }
}

并使用JSON.Net反序列化:

var json = "{...}";
var recMessage = JsonConvert.DeserializeObject<RecMessage>(json);

答案 1 :(得分:0)

首先改变这个:

在: public message data { get; set; }

在: public List<message> data { get; set; }

以下是我用来序列化/反序列化的c#函数。它需要Json.net。

public static string ToJSON(this Object obj)
{
    return JsonConvert.SerializeObject(obj);
}

public static T FromJSON<T>(string jsonData)
{
    return JsonConvert.DeserializeObject<T>(jsonData);
}

您可以这样使用它:

RecMessage myMessage = FromJson<RecMessage>(jsonString)