如何在POJO中使用动态键设置JSON,并在Android JAVA中从中获取数据?
我正在开发一个电子商务应用程序,我正在从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如何在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”
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也是嵌套的,您也可以按照自己的方法操作。在每个对象的键的帮助下,将其余值转换为JsonArrayJsonArray 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();
}
}