我正在开发一个主要以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),例如List从JSON数组反序列化 . JsonArrayAttribute也可以添加到类型中以强制它从JSON数组反序列化 .
谁能告诉我如何在对象列表而不是对象上进行反序列化?
2 回答
您必须创建此类并创建如下方法:
请注意,您需要为JavaScriptSerializer添加引用 .
不知道你的json数据的结构,但我猜你使用一些自定义类来反序列化DataContractJsonSerializer你可以用以下方式反序列化
Json列表: