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

如何在POJO中使用动态键设置JSON,并在Android JAVA中从中获取数据?,java,android,json,Java,Android,Json,我正在开发一个电子商务应用程序,我正在从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”

我正在开发一个电子商务应用程序,我正在从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;
}
//---------------

Amd我正在使用volley库。这是我的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();
            }

        }
    }

我正在使用该数据字符串。

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

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();
        }
    }
public-void-convertJSON(JSONObject-JSONObject){
试一试{
JSONObject object=JSONObject.getJSONObject(“数据”);
迭代器iter=object.keys();
while(iter.hasNext()){
String key=iter.next();
对象值=Object.get(键);
JSONObject obj2=object.getJSONObject(键);
//将密钥设置为POJO
迭代器iter2=obj2.keys();
while(iter2.hasNext()){
字符串key2=iter2.next();
//……等等
}
}
}捕获(JSONException e){
e、 printStackTrace();
}
}

您是在提取数据中的数组还是试图转换完整的JSON?我的意思是顶级pojo应该有状态和数据。数据下面是其他对象。显示您使用的一些Java代码,包括库的导入。如果您可以询问API开发人员:“数据”:{“存储”:你能问他们这是一个数组、映射还是其他什么吗?使用迭代器,你可以得到JSON每个对象的键。得到键并用它来获取下一个对象。API是用Django python及其映射编写的。我更新了java代码,请重新检查这个问题。@stutikasliwal我已经尝试过这种方法,但我的JSON无法转换t转换为JsonArray,它会引发无法转换为JsonArray的异常。但执行嵌套循环可能会减慢我的应用程序的速度…这是唯一的方法吗?是的,但JSON也是嵌套的,您也可以按照自己的方法操作。在每个对象的键的帮助下,将其余值转换为JsonArray
JsonArray JsonArray=new JsonArray()
jsonArray.put(obj2.get(key));
在迭代器中。一切都好
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();
            }

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