将JSON中的数组反序列化为类/对象

我正在尝试将JSON数据存储到类中。 我可以将我的其他JSON字符串反序列化为类: var ser = JsonConvert.DeserializeObject(myJSON); 在我遇到arrays之前。

  { \"Test\": [{ \"FirstBool\":1, \"aString\":\"hello\" }] } 

这是我的JSON类:

 public class Test { [JsonProperty("FirstBool")] public bool FirstBool { get; set; } [JsonProperty("aString")] public string aString { get; set; } } public class ResultObject { [JsonProperty("Test")] public List Test { get; set; } } 

我如何反序列化我的非数组JSON

 var ser = JsonConvert.DeserializeObject(myJSON); 

我需要做些什么改变才能让它再次发挥作用?

编辑回答

我后面注意到你的json字符串包含名为Test对象,它基本上是一个object数组( object[] )。

正如您从json字符串中看到的:

{“Test”:[{“FirstBool”:1,“aString”:“hello”}]}

[表示json对象开始数组类型, ]表示json对象结束了数组类型。

{表示json对象开始一个对象类型, }表示json对象结束了一个对象类型。

在您的情况下,需要使用Newtonsoft.Json库中的现有方法来生成一种自定义反序列化器。

Test对象的示例可以是:

 JObject obj = JObject.Parse(jsonString); // now your obj contains field named "Test" that is of type object[] // to retrieve informations you have to select "Test" token JToken testToken = obj.SelectToken("Test"); // your token contains now something like " [{ "FirstBool" : 1, "aString" : "hello" }]" // which basically is an array // meaning that you have to iterate through this foreach(var child in token.Children()) { // and convert it to a Test object Test test = JsonConvert.DeserializeObject(child.ToString()); // test now is fully deserialized object } 

将其反序列化为列表:

 JsonConvert.DeserializeObject>(json); 

…而不是包装器对象。