2015-03-02 7 views
6

Also, das ist meine Klasse:Get C# -Objekt-Array aus einem JSON-String

public class User 
{ 
    public User() { } 

    public string Username { get; set; } 
    public string Password { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

} 

Und das ist, wie meine JSON-String wie folgt aussieht:

{"results":[{"FirstName":"firstname1","LastName":"lastname1","Password":"TestPassword","Username":"TestUser","createdAt":"2015-03-02T17:36:25.232Z","objectId":"a8bKXDg2Y2","updatedAt":"2015-03-02T20:35:48.755Z"},{"FirstName":"firstname2","LastName":"lastname2","Password":"TestPw","Username":"TestUser2","createdAt":"2015-03-02T20:35:26.604Z","objectId":"2XPIklE3uW","updatedAt":"2015-03-02T20:35:53.712Z"}]} 

Ich möchte um einen Benutzer [] Benutzer daraus zu erhalten. Mein Problem ist die {"Ergebnisse:": [....]} - Teil.

Ich habe es auf diese Weise versucht:

JavaScriptSerializer js = new JavaScriptSerializer(); 
User[] user = js.Deserialize<User[]>(jsonString); 

aber ich denke, die Ergebnisse-Teil alles oben irgendwie durcheinander. Was wäre der beste Weg, um dieses Problem zu lösen?

+2

Wenn Sie die JSON habe ich werde http://json2csharp.com immer empfehlen. Es generiert die Klassen, in die Sie deserialisieren müssen. –

Antwort

7

Versuchen Sie, ein Verpackungsmodell definieren, die Ihre JSON-Struktur widerspiegeln:

public class MyModel 
{ 
    public User[] Results { get; set; } 
} 

Jetzt können Sie voran gehen und deserialisieren Ihre JSON-String zurück zu diesem Wickel Modell:

JavaScriptSerializer js = new JavaScriptSerializer(); 
MyModel model = js.Deserialize<MyModel>(jsonString); 

und jetzt gibt es nichts Verhindern, dass Sie Ihre Benutzersammlung zurückbekommen:

User[] user = model.Results; 
+0

danke, das könnte funktionieren - aber ist es eine gute Möglichkeit, einen Wrapper für jede Klasse zu erstellen? –

+1

Natürlich ist das ein guter Weg. Sie müssen genau der JSON-Struktur entsprechen, die Sie deserialisieren. Wie sonst erwarten Sie, dass ein JSON-Serializer automatisch weiß, was Sie erreichen möchten? Es funktioniert nach Typ Introspektion und Eigenschaften übereinstimmen. Stellen Sie daher sicher, dass Sie beim Serialisieren/Deserialisieren die richtige Struktur haben. –

+0

Vielen Dank! Hat mir viel geholfen. (Ich muss etwa 7 Minuten warten, um diese Antwort zu akzeptieren, ich werde es später tun) –

1

Sie benötigen eine andere Schicht auf dem Modell

public class Data 
{ 
    public User[] results { get; set; } 
} 

Dann deserialisieren die Data Klasse

Verwandte Themen