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实现这一目标?谢谢!
如果您希望输入是一个数组,则需要将其声明为对象中的数组:
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)