json.net列出序列化到JSON数组

thu*_*der 1 c# arrays serialization json json.net

我正在使用json.net将对象序列化为json字符串.现在我有一个对象列表,我喜欢序列化为Json数组.但是,我无法用json.net做到这一点,并希望有人可以指出我的错误.

我有以下课程:

class PeopleList {
    public Person inputs { get; set; }
}

class Person {
    public String name { get; set; }
    public int age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码来序列化对象:

var json = new List<PeopleList>();
Person p1 = new Person { name = "Name 1", age = 20 };
json.Add(new PeopleList { inputs = p1 });
Person p2 = new Person { name = "Name 2", age = 30 };
json.Add(new PeopleList { inputs = p2 });


        string jsonString = JsonConvert.SerializeObject(json, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.Indented });
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

[
  {
    "inputs": {
      "name": "Name 1",
      "age": 20
    }
  },
  {
    "inputs": {
      "name": "Name 2",
      "age": 30
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

这是我真正想要的:

[
  {
    "inputs": [
      {
        "name": "Name 1",
        "age": 20
      }
    ]
  },
  {
    "inputs": [
      {
        "name": "Name 2",
        "age": 30
      }
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要使用[]封装列表中的每个对象.我怎样才能通过Json.net实现这一目标?谢谢!

PMe*_*let 7

如果您希望输入是一个数组,则需要将其声明为对象中的数组:

class PeopleList {
    public List<Person> inputs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用它:

var json = new List<PeopleList>();
List<Person> p1 = new List<Person> { new Person { name = "Name 1", age = 20 } };
json.Add(new PeopleList { inputs = p1 });
List<Person> p2 = new List<Person> { new Person { name = "Name 2", age = 30 } };
json.Add(new PeopleList { inputs = p2 });

string jsonString = JsonConvert.SerializeObject(json, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.Indented });
Run Code Online (Sandbox Code Playgroud)