当前,我正在使用2.2版开发.NET Core应用程序。我从无法更改的Web API收到XML响应。我看起来像这样:
<?xml version="1.0" encoding="UTF-8"?><GetInformation>
<d1>PL11VTMICE</d1>
<d2>PL-BL02912</d2>
<d3>BL</d3>
<d4>0</d4>
<d5>MTR</d5>
<d6>405</d6>
<d7/>
<d8/>
<d9/>
<d10>2019-10-15 13:29:07.000</d10>
我有一个看起来像这样的模型类:
public class Data
{
[Required]
public string d1 { get; set; }
public string d2 { get; set; }
public string d3 { get; set; }
public string d4 { get; set; }
public string d5 { get; set; }
public string d6 { get; set; }
public string d7 { get; set; }
public string d8 { get; set; }
public string d9 { get; set; }
public string d10 { get; set; }
}
public class Informations
{
public List<Data> GetInformation { get; set; }
}
从XML到JSON的转换与此配合良好:
XmlDocument doc = new XmlDocument();
var res = await client.Getasync("some_address");
if (res.IsSuccessStatusCode)
{
var result = res.Content.ReadAsStringAsync().Result;
doc.LoadXml(result);
string jsontest = JsonConvert.SerializeXmlNode(doc);
}
当我在运行时查看“ jsontest”变量时,它看起来像这样:
当我尝试将其反序列化为对象时:
Informations bob = JsonConvert.DeserializeObject<Informations>(jsontest);
我收到以下错误:
- ex {Newtonsoft.Json.JsonSerializationException:无法将当前JSON对象(例如{“ name”:“ value”})反序列化为类型'System.Collections.Generic.List`1 [xxx.xxx.Data]',因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。 要解决此错误,可以将JSON更改为JSON数组(例如[1,3]),也可以更改反序列化类型,使其成为普通的.NET类型(例如,不像整数这样的原始类型,也不像这样的集合类型数组或列表),可以从JSON对象反序列化。还可以将JsonObjectAttribute添加到类型中,以强制其从JSON对象反序列化。
我已经尝试了许多来自网络的解决方案,例如与JsonProperty标记一起从此处JSON Property使用,但不幸的是没有任何区别。 希望你能帮助我。
谢谢。