2016-04-26 16 views
0

Ich benutze json.net, um ein Objekt zu einem JSON-String zu serialisieren. Jetzt habe ich eine Liste von Objekten, die ich gerne in ein JSON-Array serialisieren möchte. Allerdings kann ich das mit json.net nicht machen und hoffe, dass jemand meinen Fehler aufzeigen kann.json.net Liste Serialisierung zu JSON Array

Ich habe die folgenden Klassen:

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

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

ich den folgenden Code bin mit der Objekte serialisiert werden:

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 }); 

Das gibt mir die folgende Ausgabe:

[ 
    { 
    "inputs": { 
     "name": "Name 1", 
     "age": 20 
    } 
    }, 
    { 
    "inputs": { 
     "name": "Name 2", 
     "age": 30 
    } 
    } 
] 

Hier ist, was ich eigentlich will:

[ 
    { 
    "inputs": [ 
     { 
     "name": "Name 1", 
     "age": 20 
     } 
    ] 
    }, 
    { 
    "inputs": [ 
     { 
     "name": "Name 2", 
     "age": 30 
     } 
    ] 
    } 
] 

Wie Sie sehen, brauche ich jedes Objekt in meiner Liste mit [] gekapselt. Wie kann ich das mit Json.net erreichen? Vielen Dank!

+0

Machen Sie 'Eingänge' in eine Liste oder ein Array, wenn Sie wollen, dass es ein Array in JSON ist auch –

Antwort

2

Wenn Sie Ihre Eingaben wollen ein Array sein, müssen Sie es als ein Array in Ihrem Objekt deklarieren:

class PeopleList { 
    public List<Person> inputs { get; set; } 
} 

Dann können Sie es verwenden:

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

Großartig! Funktioniert perfekt! Ich habe irgendwie die Lösung nicht gefunden, nachdem ich es lange versucht hatte. Aber jetzt ist es offensichtlich. Vielen Dank! – thunder

Verwandte Themen