2016-04-26 2 views
0

Я использую json.net для сериализации объекта для json-строки. Теперь у меня есть список объектов, которые мне нравится сериализовать в массив Json. Тем не менее, я не могу сделать это с помощью json.net и надеюсь, что кто-то может указать на мою ошибку.сериализация сериала json.net для JSON Array

У меня есть следующие классы:

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? Благодаря!

+0

Сделайте 'input' в список или массив, если вы хотите, чтобы он был массивом в JSON также –

ответ

2

Если вы хотите, чтобы ваши входы быть массив, вам нужно объявить его как массив в вашем объекте:

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

-1

на основе вашей продукции и то, что вы хотите, вы, вероятно, хотите сделать что-то вроде этого

Json2CSharpClass Converter

public class Person 
{ 
    public string name { get; set; } 
    public int age { get; set; } 
} 

public class PeopleList 
{ 
    public List<Person> inputs { get; set; } 
} 
Смежные вопросы