问题描述
我知道这个问题看起来很熟悉,但就我而言,这有点不同。
我的问题, 当我DeserializeObject时,它总是返回null,我不太确定这是否是由映射引起的。
问题:如何反序列化嵌套的JSON对象以映射字段?如果需要在将XML转换为JSON方面进行一些更改,请也指导我
谢谢!
将XML响应转换为JSON
var result = await client.GetAsync($"url");
var xml = result.Content.ReadAsstringAsync().Result;
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string json = JsonConvert.SerializeXmlNode(doc);
//the results hear is null for all the properties
var des = (AccountLite)Newtonsoft.Json.JsonConvert.DeserializeObject(json,typeof(AccountLite));
Console.WriteLine(des);
Console.ReadLine();
JSON对象
{
"MessageEnvelope": {
"listofAccountLite": {
"AccountLite": [
{
"Id": "","AccountStatus": "","AccountTypeCode": "","CSN": "","Location": "","MasteraccountId": "","Name": ""
},{
"Id": "","Name": ""
}
]
}
}
}
C#基于JSON对象生成的类
public partial class Welcome
{
[JsonProperty("MessageEnvelope")]
public MessageEnvelope MessageEnvelope { get; set; }
}
public partial class MessageEnvelope
{
[JsonProperty("listofAccountLite")]
public listofAccountLite listofAccountLite { get; set; }
}
public partial class listofAccountLite
{
[JsonProperty("AccountLite")]
public AccountLite[] AccountLite { get; set; }
}
public partial class AccountLite
{
[JsonProperty("Id")]
public string Id { get; set; }
[JsonProperty("AccountStatus")]
public string AccountStatus { get; set; }
[JsonProperty("AccountTypeCode")]
public string AccountTypeCode { get; set; }
[JsonProperty("CSN")]
public string Csn { get; set; }
[JsonProperty("Location")]
public string Location { get; set; }
[JsonProperty("MasteraccountId")]
public string MasteraccountId { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
}
解决方法
仅反序列化为根类Welcome
而不是AccountLite
。
//var des = (AccountLite)Newtonsoft.Json.JsonConvert.DeserializeObject(json,typeof(AccountLite));
Welcome welcome = JsonConvert.DeserializeObject<Welcome>(json);