我正在尝试在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” } ]}
我设法获得status
和message
,但无法获得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; }
}
答案 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)