简体   繁体   English

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

[英]How can i set this JSON with dynamic keys in POJO and get data from it in Android JAVA?

I am developing an e-commerce app and I am getting this JSON data from API. 我正在开发一个电子商务应用程序,并且正在从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"]]} {“状态”:0,“数据”:{“商店”:{“ test-5”:{“名称”:“测试5”,“位置”:{“名称”:“某个地方B”,“ id “:2},” cover“:” IMAGE-URL-HERE“},” test-2“:{” name“:” Test 2“,” locality“:{” name“:”某个地方A“,” id”:2},“ cover”:“ IMAGE-URL-HERE”}}},“ action”:[[“ DATA”,“ stores”]]}

I have created some POJO for this data too 我也为此数据创建了一些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;
    }
}

//------------- public class PartnerStoresPOJO { // -------------公共类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;
}

} //---------------- } // ----------------

public class PartnerStoreDetailPOJO { 公共类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;
    }
}

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

Amd i am using volley library. 我正在使用排球库。 This is my java code- 这是我的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();
            }

        }
    }

I am using that data string. 我正在使用该数据字符串。

Try it once: Do changes accordingly, It can give you a direction for your query. 尝试一次:进行相应的更改,它可以为您提供查询的方向。

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();
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM