使用Json.Net反序列化对象数组

Akb*_*ari 3 c# json json.net

收到的数据是这样的:

在此输入图像描述

在每个项目中,有一个对象customer,我有一个相同的类.如何使用Json.net转换它们?

我试过以下几点:

var data = JsonConvert.DeserializeObject<List<customer>>(val);
Run Code Online (Sandbox Code Playgroud)

并添加另一个类:

public class customerJson
{
    public Customer customer{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并尝试反序列化它:

var data = JsonConvert.DeserializeObject<List<customerJson>>(val);
Run Code Online (Sandbox Code Playgroud)

有了这两个我得到一个例外:

无法将当前JSON对象(例如{"name":"value"})反序列化为类型'System.Collections.Generic.List`1 [customer]',因为该类型需要JSON数组(例如[1,2,3] )正确反序列化.要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是类似的集合类型可以从JSON对象反序列化的数组或List.JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化.路径'rows',第1行,第8位.

数据:

{"rows":[{"id":"232333","name":"nam"},{"id":"3434444","name":"2ndName"}]}
Run Code Online (Sandbox Code Playgroud)

asg*_*las 10

如果我正确读取你的json数据结构你会想要这个:

public class Root
{
    public List<Customer> rows { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

var data = JsonConvert.DeserializeObject<Root>(val);
Run Code Online (Sandbox Code Playgroud)

经过测试的代码:

void Main()
{
    var test = JsonConvert.DeserializeObject<Root>("{\"rows\":[{\"id\":\"232333\",\"name\":\"nam\"},{\"id\":\"3434444\",\"name\":\"2ndName\"}]}");

    Console.WriteLine(test.rows[0].id); // prints 232333
}

public class Customer
{
    public int id { get; set; }
}

public class Root
{
    public List<Customer> rows { get; set; }
}
Run Code Online (Sandbox Code Playgroud)