C# 无法将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); 我做错了什么?谢谢您

你好,我收到了这个错误消息

无法将当前JSON数组(例如[1,2,3])反序列化为类型“ClassLibraryMifosX.ViewModels.Rootobject2”,因为该类型需要JSON对象(例如{“name\”:“value\”})才能正确反序列化。\r\n若要修复此错误,请将JSON更改为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);