2016-08-01 10 views
0

Hallo, ich versuche Android zu lernen und jetzt die Nachrüstung 1.9 für meine Ruhe POST und GET Anfrage kann jemand mir helfen, wie Json Objekte und Zeichenketten zu modellieren? im sehr verwirrt über einige Tutorials, die ich gelernt habe, wie man ein pojo für dieses JSON-Objekt machenAndroid Retrofit POJO Modell

{ 
"contacts": [ 
    { 
      "id": "c200", 
      "name": "Ravi Tamada", 
      "email": "[email protected]", 
      "address": "xx-xx-xxxx,x - street, x - country", 
      "gender" : "male", 
      "phone": { 
       "mobile": "+91 0000000000", 
       "home": "00 000000", 
       "office": "00 000000" 
      } 
    }, 
    { 
      "id": "c201", 
      "name": "Johnny Depp", 
      "email": "[email protected]", 
      "address": "xx-xx-xxxx,x - street, x - country", 
      "gender" : "male", 
      "phone": { 
       "mobile": "+91 0000000000", 
       "home": "00 000000", 
       "office": "00 000000" 
      } 
    } 
    }}]} 

Mit diesem Modell

Contacts.class

public class Contacts { 
@SerializedName("contacts") 
@Expose 
private List<Contact> contacts = new ArrayList<Contact>(); 

public List<Contact> getContacts() { 
    return contacts; 
} 

public void setContacts(List<Contact> contacts) { 
    this.contacts = contacts; 
} 

und Contact.class für die Objekte

public class Contact { 

@SerializedName("id") 
@Expose 
private String id; 
@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("email") 
@Expose 
private String email; 
@SerializedName("address") 
@Expose 
private String address; 
@SerializedName("gender") 
@Expose 
private String gender; 

public String getId() {return id;} 
public void setId(String id) {this.id = id;} 
public String getName() {return name;} 
public void setName(String name) {this.name = name;} 
public String getEmail() {return email;} 
public void setEmail(String email) {this.email = email;} 
public String getAddress() {return address;} 
public void setAddress(String address) {this.address = address;} 
public String getGender() {return gender;} 
public void setGender(String gender) {this.gender = gender;}} 

Und Aufruf der Liste mit dieser auf meiner MainActivity.class

THen meine Frage ist, wie soll ich ein Modell aus diesem Array-Objekt machen?

{ 
"-KNea90tV5nZlkeqxc3Q": { 
    "accountName": "Mark Papyrus", 
    "accountNumber": "12435656443", 
    "accountType": "Peso Savings" 
}, 
"-KNeaPmBoTXV4mQC6cia": { 
    "accountName": "Mark Dremeur", 
    "accountNumber": "12435656444", 
    "accountType": "Peso Checking" 
} 

ich fand es verwirrend, wie Modelle und Differenz von bestimmten json Arrays pls leite mich dank zu machen.

+2

Hier ist ein protip - erzeugen sie http://www.jsonschema2pojo.org/ zum Beispiel. – Shark

+0

@ Shark - Eigentlich gemacht, aber mein Problem ist die JSON Keys wie diese "-KNea90tV5nZlkeqxc3Q" ist zufällig generiert, so kann ich es nicht konstant machen – user3262438

+1

Das würde JSON eine schlechte Wahl machen, es sei denn, der zufällig generierte Salz Teil wird ein Mitglied. Ich sage, dass es schlecht ist, weil die Modellklasse am Ende alle zufälligen Werte enthält und nur einem von ihnen einen Wert zuweist, ohne dass Sie wissen, welches zu prüfen ist ... es garantiert ein Gespräch mit dem Backend-Team, um Ihnen weitere Anweisungen zu geben . – Shark

Antwort

0

Ich denke, ich und Sie haben die gleichen Probleme, aber ich bin fest, so kann ich Ihnen helfen, so weit ich kann. Erstens können Sie jsonschema2pojo.org nicht verwenden, um die Pojo-Klasse zu erstellen, die Sie brauchen, um hashmap zu verwenden, was ich verstehe "-KNea90tV5nZlkeqxc3Q": ist ein Schlüssel, aber 1 der Klassen sollte der folgende sein (auch der accountype seit seinem Typ Sie können verwenden eNUM aber es wäre etwas schwieriger zu Code)

public class Account { 




private String accountName; 

private String accountNumber; 

private String accountType; 


public Account() { 
        } 




public String getAccountName() {return accountName;} 
public void setAccountName(String accountName) { 
this.accountName=accountName;} 

// *** repeat for the accountnumber and accountype 

} 
0

, wenn der Schlüssel „KNea90tV5nZlkeqxc3Q“ dynamisch und müssen sie fangen, Sie musto ein hashmap in Ihrem Modell zu verwenden, um sie richtig zu fangen.

Prüfung dieses Problem es nützlich sein könnte:

Parse Dynamic Key Json String using Retrofit