2016-12-19 3 views
0

Мои требования: У меня есть запрос JSON в столбце таблицы, который приведен ниже.Прочтите запрос JSON и карту 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"}, 
} 
]} 

мне нужно прочитать его из БД и сопоставить значения JSON в трех различных классов properties.i.e. PrimaryData.java. OfficeData.java, ContactData.java. Я могу успешно прочитать запрос от БД, но поразил, как сопоставить значения свойствам в моих трех классах POJO. Я попытался использовать более быстрый xml, google Gson, org.json, но я не мог понять это. Может кто-нибудь дать мне идею или часть фрагмента кода? Как я пытаюсь достичь выше (не уверен, что если этот подход является правильным на всех)

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

Покажите нам некоторый код –

+0

@Yogesh Нараянан: Вы можете плз смотреть в него , –

ответ

1

С 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);