代码之家  ›  专栏  ›  技术社区  ›  Aniket

如何在POJO中使用动态键设置JSON,并在Android JAVA中从中获取数据?

  •  -1
  • Aniket  · 技术社区  · 7 年前

    我正在开发一个电子商务应用程序,我正在从API获取这个JSON数据。

    {“status”:0,“data”:{“stores”:{“test-5”:{“name”:“test-5”,“locality”:{“name”:“Some place B”,“id”:2},“cover”:“IMAGE-URL-HERE”},“test-2”:{“name”:“test 2”,“locality”:{“name”:“Some place A”,“id”:2},“cover”:“IMAGE-URL-HERE”},“action”:[“data”,“stores”]}}

    我也为这些数据创建了一些POJO

    public class PartnerStoreMainPOJO {
        @SerializedName("partnerstore")
        @Expose
        private PartnerStoresPOJO partnerstore;
        /**
         *
         * @return
         * The data
         */
        public PartnerStoresPOJO getPartnerStore() {
            return partnerstore;
        }
        /**
         *
         * @param partnerstore
         * The data
         */
        public void setPartnerStore(PartnerStoresPOJO partnerstore) {
            this.partnerstore = partnerstore;
        }
    }
    

    //------------- 公共类PartnerStoresPOJO{

    @SerializedName("partnerstoredetail")
    @Expose
    private Map<String, PartnerStoreDetailPOJO> partnerstoredetail;
    
    /**
     *
     * @return
     * The feeds
     */
    public Map<String, PartnerStoreDetailPOJO>  getpartnerstoredetail() {
        return partnerstoredetail;
    }
    /**
     *
     * @param partnerstoredetail
     * The feeds
     */
    public void setpartnerstoredetail(Map<String, PartnerStoreDetailPOJO> partnerstoredetail) {
        this.partnerstoredetail = partnerstoredetail;
    }
    

    }

    公共类PartnerStoreDetailPOJO{

    @SerializedName("partnerstorelocality")
    @Expose
    private Map<String, PartnerStoreLocalityPOJO> partnerstorelocality;
    
    
    @SerializedName("cover")
    @Expose
    private String cover;
    @SerializedName("name")
    @Expose
    private String name;
    
    /**
     * @return The name
     */
    public String getName() {
        return name;
    }
    
    /**
     * @param name The name
     */
    public void setName(String name) {
        this.name = name;
    }
    
    /**
     * @return The cover
     */
    public String getCover() {
        return cover;
    }
    
    /**
     * @param cover The address
     */
    public void setCover(String cover) {
        this.cover = cover;
    }
    
    public Map<String, PartnerStoreLocalityPOJO> getpartnerstorelocality() {
        return partnerstorelocality;
    }
    
    public void setpartnerstorelocality(Map<String, PartnerStoreLocalityPOJO> partnerstorelocality) {
        this.partnerstorelocality = partnerstorelocality;
    }
    

    }

    public class PartnerStoreLocalityPOJO {
        @SerializedName("name")
        @Expose
        private String name;
        @SerializedName("id")
        @Expose
        private String id;
        /**
         *
         * @return
         * The name
         */
        public String getName() {
            return name;
        }
        /**
         *
         * @param name
         * The name
         */
        public void setName(String name) {
            this.name = name;
        }
        /**
         *
         * @return
         * The id
         */
        public String getId() {
            return id;
        }
        /**
         *
         * @param id
         * The id
         */
        public void setId(String id) {
            this.id = id;
        }
    }
    

    //---------------

    我正在使用截击库。这是我的java代码-

    public void onResultReceived(String response, String tag_json_obj) {
            if (tag_json_obj.equals(LOCALITY_SET)){
    
                try {
                    JSONObject jsonObject=new JSONObject(response);
                    String data=jsonObject.getString("data");
    
                } catch (JSONException e) {
                    Log.d("EXCEPTN",e.toString());
                    e.printStackTrace();
                }
    
            }
        }
    

    我正在使用那个数据字符串。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Stuti Kasliwal    7 年前

    尝试一次:做相应的更改,它可以为您的查询提供方向。

    public void convertJSON(JSONObject jsonObject) {
            try {
                JSONObject object = jsonObject.getJSONObject("data");
    
                Iterator<String> iter = object.keys();
                while (iter.hasNext()) {
                    String key = iter.next();
                    Object value = object.get(key);
    
                    JSONObject obj2 = object.getJSONObject(key);
                    //set key to POJO
    
                    Iterator<String> iter2 = obj2.keys();
                    while (iter2.hasNext()) {
                        String key2 = iter2.next();
                        //....so on
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }