2016-12-19 2 views
0

Meine Anforderung: Ich habe eine JSON-Anfrage in einer Tabellenspalte, die wie folgt ist.Lesen JSON Anfrage und Karte zu JAVA POJO

{ 
"customerData": [{ "primaryData":[ { 
"HNo": "8-10-2", 
"APTNM": "SRSENCLAVE", 
"STRT": "MGCLNY" 
}], 
"officeData":{ 
"ADDR": "1/7-25", 
"STRT": "FINDIST", 
"LM": "JBE" 
}, 
"ContactData": { 
"PHNO":"XXXXXXXXX", 
"ZIP":"XXXXXX", 
"MAILCD": "XXXX"}, 
} 
]} 

Ich muss es von DB lesen und die JSON-Werte in drei verschiedenen Klassen properties.i.e zuordnen. PrimäreDaten.java. OfficeData.java, ContactData.java. Ich bin erfolgreich in der Lage, die Anfrage von der DB zu lesen, schlug aber vor, wie die Werte den Eigenschaften in meinen drei POJO-Klassen zugeordnet werden. Ich habe versucht, schneller xml, google Gson, org.json, aber ich konnte es nicht gut bekommen. Kann mir jemand eine Idee oder einen Teil des Codeausschnitts geben? Wie ich versuche oben zu erreichen (nicht sicher, ob dieser Ansatz überhaupt richtig ist)

List<Map<String, PrimaryData>> cxData = new ArrayList<Map<String,PrimaryData>>(); 
      JSONObject jSONObject = new JSONObject(query.getResultList().get(0).toString());    
           JSONArray jsonArray = jSONObject.getJSONArray("customerData"); 
           int length = jsonArray.length(); 
            for (int i=0; i<length; i++) 
            { 
             // FOR EACH ENTRY 
             JSONObject OneEntry = jsonArray.getJSONObject(i); 
             int OneEntrySize = OneEntry.length(); 
             JSONArray EntKey = OneEntry.names(); 
             Map<String, PrimaryData> map = new HashMap<String, PrimaryData>(); 
             for (int j=0; j<OneEntrySize;j++) 
             { // FOR EACH ITEM IN AN ENTRY 
              String key = EntKey.getString(j); 
              PrimaryData val = (PrimaryData)OneEntry.opt(key);;--unable to cast (can not cast JsonArray to PrimaryData) 
              map.put(key, val);    
             }      
             cxData.add(map);     
            }  
+0

uns zeigen einige Code –

+0

@Yogesh Narayanan: Können Sie plz es aussehen in . –

Antwort

1

Mit GSON

public class Data { 
    @SerializedName("customerData") @Expose private List<CustomerData> customerData = null; 
} 

public class CustomerData { 
    @SerializedName("primaryData") @Expose private List<PrimaryData> primaryData = null; 
    @SerializedName("officeData") @Expose private OfficeData officeData; 
    @SerializedName("ContactData") @Expose private ContactData contactData; 
} 

public class PrimaryData { 
    @SerializedName("HNo") @Expose private String hNo; 
    @SerializedName("APTNM") @Expose private String aPTNM; 
    @SerializedName("STRT") @Expose private String sTRT; 
} 

public class OfficeData { 
    @SerializedName("ADDR") @Expose private String aDDR; 
    @SerializedName("STRT") @Expose private String sTRT; 
    @SerializedName("LM") @Expose private String lM; 
} 

public class ContactData { 
    @SerializedName("PHNO") @Expose private String pHNO; 
    @SerializedName("ZIP") @Expose private String zIP; 
    @SerializedName("MAILCD") @Expose private String mAILCD; 
} 


Gson gson = new Gson(); 
Data data = gson.fromJson(dataJSON, Data.class);