首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取JSON请求和映射到JAVA

读取JSON请求和映射到JAVA
EN

Stack Overflow用户
提问于 2016-12-19 06:19:05
回答 1查看 74关注 0票数 0

我的要求:表列中有一个JSON请求,如下所示。

代码语言:javascript
复制
{
"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"},
}
]}

我需要从DB读取它,并将JSON值映射到三个不同的类属性中,即。PrimaryData.java。OfficeData.java,ContactData.java.我能够成功地读取来自DB的请求,但我想到了如何将值映射到我的三个POJO类中的属性。我试过使用更快的xml、google、org.json,但我无法很好地理解它。有人能给我一个想法或代码片段的一部分吗?我是如何实现上述目标的(不确定这种方法是否正确)

代码语言:javascript
复制
 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);                 
                                   }    
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-21 04:20:56

葛森

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41216787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档