【发布时间】:2013-02-13 00:20:05
【问题描述】:
我正在开发一个主要以 C# 作为后端的项目,但我不是经验丰富的 C# 开发人员,因此我无法弄清楚如何修复对象列表的 json 反序列化。以下函数负责反序列化,但出现错误:
using System.IO;
using System.Web;
using Raven.Imports.Newtonsoft.Json;
namespace Corina.Web.Handlers
{
public class JsonRequestHandler
{
public T Handle<T>(HttpContextBase context)
{
string requestData;
context.Request.InputStream.Position = 0;
using (var inputStream = new StreamReader(context.Request.InputStream))
{
requestData = inputStream.ReadToEnd();
}
return JsonConvert.DeserializeObject<T>(requestData, new Raven.Imports.Newtonsoft.Json.Converters.StringEnumConverter());
}
}
}
Error:
无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'Corina.Web.Views.DocumentViewModel' 因为该类型需要 JSON 对象(例如 {"name":"value"})正确反序列化。
要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"}) 或将反序列化类型更改为数组或 实现集合接口的类型(例如 ICollection、IList) 比如可以从 JSON 数组反序列化的 List。 JsonArrayAttribute 也可以添加到类型中以强制它 从 JSON 数组反序列化。
谁能告诉我如何对对象列表而不是对象进行反序列化?
【问题讨论】:
-
对我而言,我的理解是您将 2 个 JSON 对象一起发送(就像您将一个附加到另一个)并且不能将它们反序列化并要求您发送一个对象,然后将其转换为列表
-
不能用 JavaScriptSerializer 吗?
-
嗯,是的,我发送类似:
[ Object, Object, .... ];所以无法转换。 -
我会用它我知道怎么做:)
-
@Roland:你能告诉我你的对象的结构吗?
标签: c# asp.net json deserialization