2011-01-03 3 views
10

Есть ли простой способ сопоставления данных из JSON в поля моего класса с помощью API android?JSON to Java class

JSON:

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

Мой класс:

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

Ниже приведен пример: http://goo.gl/BsuaM –

ответ

7

Используйте org.json -Package.

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

Его также часть времени работы андроида, поэтому вам не нужен внешний пакет.

+4

Он действительно включен, но он точно не отображает данные. Он анализирует/записывает JSON и предлагает простой API на основе узлов. Но это ваш код делает отображение здесь. – StaxMan

+1

Я делаю это, создавая конструктор в Credentials с полями, поэтому я могу сделать тот же код в 2 строках. JSONObject x = новый JSONObject (jsonString); Учетные данные c = новые учетные данные (x.getString («email»), x.getString («пароль»)); – JPM

7

Вы можете использовать GSON.

+2

знать об этой проблеме с телефонами HTC: http://sites.google.com/site/gson/gson-on-android –

0

Я полагаю, у вас есть более одного Credential и хотят получить ...

с пакетом org.json вы могли бы использовать JSONArray, чтобы получить различные значения в то же время из одного файла JSON.

13

Использование Jackson. Гораздо удобнее (и, если производительность имеет значение, быстрее), чем при использовании пакетных классов org.json и пользовательский код:

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

(только обратите внимание, что поля полномочий должны быть «общественность», чтобы быть обнаруженным, или должны иметь методы сеттера)