2015-03-02 10 views
6

Tak, to moja klasa:Get C# -przedmiot-Array z pomocą 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; } 

} 

I to jest jak mój JSON-String wygląda następująco:

{"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"}]} 

chciałbym aby uzyskać z niego użytkowników User []. Mój problem to {"wyniki:": [....]} - Część.

Próbowałem to w ten sposób:

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

ale myślę, że na wyniki Część jest brudząc wszystko się jakoś. Jaki byłby najlepszy sposób rozwiązania tego problemu?

+2

Gdy masz JSON zawsze polecam zamiar http://json2csharp.com Data. Wygeneruje klasy, których potrzebujesz do deserializacji. –

Odpowiedz

7

Spróbuj określające model zawijania, która będzie odzwierciedlać strukturę JSON:

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

Teraz można iść dalej i deserializowania swój ciąg JSON z powrotem do tego modelu Opakowanie:

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

a teraz nie ma nic uniemożliwiając odzyskanie kolekcji użytkowników:

User[] user = model.Results; 
+0

dziękuję, to może zadziałać - ale czy jest dobrym sposobem na stworzenie opakowania dla każdej klasy? –

+1

Oczywiście, że jest to dobry sposób. Musisz dokładnie dopasować strukturę JSON, którą deserializujesz. W przeciwnym razie, jak można oczekiwać serializatora JSON automagicznie wiedzieć, co próbujesz osiągnąć? Działa poprzez introspekcję typu i dopasowanie właściwości. Więc upewnij się, że masz odpowiednią strukturę podczas serializowania/deserializacji. –

+0

Dziękuję bardzo! Bardzo mi pomogło. (Muszę poczekać około 7 minut, aby zaakceptować tę odpowiedź, zrobię to później) –

1

Musisz kolejną warstwę modelu

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

Następnie deserializowania klasę