json.net列表序列化为JSON数组
问题描述:
我使用json.net将对象序列化为json字符串。现在我有一个我想要序列化成Json数组的对象列表。但是,我无法用json.net来做到这一点,并希望有人能指出我的错误。json.net列表序列化为JSON数组
我有以下类别:
class PeopleList {
public Person inputs { get; set; }
}
class Person {
public String name { get; set; }
public int age { get; set; }
}
我使用下面的代码序列化对象:
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 });
这给了我下面的输出:
[
{
"inputs": {
"name": "Name 1",
"age": 20
}
},
{
"inputs": {
"name": "Name 2",
"age": 30
}
}
]
这是我真正想要的:
[
{
"inputs": [
{
"name": "Name 1",
"age": 20
}
]
},
{
"inputs": [
{
"name": "Name 2",
"age": 30
}
]
}
]
正如你所看到的,我需要列表中的每个对象都用[]封装。我如何用Json.net实现这一目标?谢谢!
答
如果你希望你的投入是一个数组,你需要将其申报为你的对象数组:
class PeopleList {
public List<Person> inputs { get; set; }
}
然后你可以使用它:
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 });
+0
太棒了!完美的作品!我尝试了很长一段时间后才发现解决方案。但现在很明显。谢谢! – thunder
答
根据你的输出你想要什么,你可能想要做这样的事情
public class Person
{
public string name { get; set; }
public int age { get; set; }
}
public class PeopleList
{
public List<Person> inputs { get; set; }
}
如果您希望它成为JSON中的数组,请将'inputs'放入列表或数组中 –