C# 无法将json转换为对象
你好,我收到了这个错误消息 无法将当前JSON数组(例如[1,2,3])反序列化为类型“ClassLibraryMifosX.ViewModels.Rootobject2”,因为该类型需要JSON对象(例如{“name\”:“value\”})才能正确反序列化。\r\n若要修复此错误,请将JSON更改为JSON 我的反序列化代码:C# 无法将json转换为对象,c#,asp.net-mvc,deserialization,json-deserialization,C#,Asp.net Mvc,Deserialization,Json Deserialization,你好,我收到了这个错误消息 无法将当前JSON数组(例如[1,2,3])反序列化为类型“ClassLibraryMifosX.ViewModels.Rootobject2”,因为该类型需要JSON对象(例如{“name\”:“value\”})才能正确反序列化。\r\n若要修复此错误,请将JSON更改为JSON 我的反序列化代码: Rootobject Rsc = JsonConvert.DeserializeObject<Rootobject>(json); 我做错了什么?谢谢您
Rootobject Rsc = JsonConvert.DeserializeObject<Rootobject>(json);
我做错了什么?谢谢您的JSON的第一个和最后一个字符是方括号
[]
,而不是花括号{}
。这意味着它是一个数组,而不是一个对象。为了解析它,您需要将其反序列化为类对象的数组:
Class1[] Rsc = JsonConvert.DeserializeObject<Class1[]>(json);
Json数据中没有根对象,因此只需将其反序列化为Class1
的集合,如下所示:
var collection = JsonConvert.DeserializeObject<List<Class1>>(json);
var collection=JsonConvert.DeserializeObject(json);
不要忘记VS可以为您创建一个类,用于反序列化Json数据。您不需要自己编写Class1
的定义。只需进入菜单=>Edit>Paste Special>Paste Json as class,因为Json中的根对象是一个数组,您需要反序列化为Class1[]
或列表
,而不是包含属性的对象,json中没有属性1
。因此请尝试使用反序列化对象(json)
。不客气:)如果对您有帮助,请将其标记为可接受的答案;-)vs为我创建了此类,但下次我会理解反序列化为数组或对象之间的区别
Class1[] Rsc = JsonConvert.DeserializeObject<Class1[]>(json);
Rootobject root = new RootObject();
root.Property1 = new List<Class1>(Rsc);
var collection = JsonConvert.DeserializeObject<List<Class1>>(json);