请帮助,我被卡住了。我有一个 WCF 服务,它返回如下内容:
{
"GetDataRESTResult":
[
{"Key1":100.0000,"Key2":1,"Key3":"Min"},
{"Key1":100.0000,"Key2":2,"Key3":"Max"}
]
}
我想反序列化它,但无论我使用什么(JSON.NET 或 DataContractJsonSerializer),我都会遇到错误。使用 DataContractJsonSerializer 时,我使用的是代码:
byte[] data = Encoding.UTF8.GetBytes(e.Result);
MemoryStream memStream = new MemoryStream(data);
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<DataDC>));
List<DataDC> pricinglist = (List<DataDC>)serializer.ReadObject(memStream);
其中 DataDC 是我从 WCF REST 服务的服务引用中获得的数据合同,我从中获取 JSON 数据,我得到的错误是 InvalidCastException ...
尝试使用 JSON.NET 我得到另一个异常,但我仍然无法弄清楚,有人可以帮忙吗?
编辑这是一个 JSON.NET 堆栈跟踪:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.List`1[MyApp.MyServiceReference.DataDC]”,因为该类型需要 JSON 数组(例如 [1, 2,3]) 正确反序列化。要修复此错误,要么将 JSON 更改为 JSON 数组(例如 [1,2,3]),要么将反序列化类型更改为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。路径“GetDataRESTResult”,第 1 行,位置 23。