【发布时间】:2012-10-02 22:21:11
【问题描述】:
请帮忙,我卡住了。 我有一个 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 位。
【问题讨论】:
标签: c# .net json json.net datacontractserializer