2011-01-03 14 views
10

Czy istnieje prosty sposób mapowania danych z JSON na pola mojej klasy za pomocą interfejsów API Androida?JSON na klasę Java

JSON:

{ email: 'email', password: 'pass' } 

Moja klasa:

class Credentials 
{ 
    string email; 
    string password; 
} 
+0

Oto przykład: http://goo.gl/BsuaM –

Odpowiedz

7

Użyj opakowania-org.json.

JSONObject x = new JSONObject(jsonString); 
Credentials c = new Credentials(); 
c.email = x.getString("email"); 
c.password = x.getString("password"); 

Jest to również część środowiska uruchomieniowego Androida, więc nie potrzebujesz żadnego zewnętrznego pakietu.

+4

Jest on rzeczywiście uwzględniony, ale nie mapuje dokładnie danych. Analizuje/zapisuje JSON i oferuje prosty interfejs API oparty na węzłach. Ale to Twój kod robi tutaj mapowanie. – StaxMan

+1

Robię to, tworząc konstruktor w polu Poświadczenia z polami, aby zamiast tego móc wykonać ten sam kod w 2 liniach. JSONObject x = new JSONObject (jsonString); Poświadczenia c = nowe poświadczenia (x.getString ("email"), x.getString ("hasło")); – JPM

7

można użyć GSON.

+2

należy pamiętać o tym problemie z telefonami HTC: http://sites.google.com/site/gson/gson-on-android –

0

I załóżmy, że masz więcej niż jeden poświadczeń u chcą uzyskać ...

z pakietem org.json można użyć JSONArray uzyskać różne wartości w tym samym czasie z jednego pliku JSON.

13

Użyj Jackson. Znacznie wygodniejsze (i jeśli sprawach wydajności, szybciej) niż przy użyciu dołączonych klas org.json i niestandardowy kod:

Credentials c = new ObjectMapper().readValue(jsonString, Credentials.class); 

(tylko pamiętać, że pola mandatów musi być „publiczne” na odkrycie albo trzeba mieć metody setera)