[英]How to parse following JSON using GSON in android?
As keysArray
(A,B,C) are dynamic
and cores
having the same object names ? 由于
keysArray
(A,B,C)是dynamic
并且cores
具有相同的对象名称? Please help !!! 请帮忙 !!!
{
"result":"success",
"keysArray":[
"A",
"B",
"C",
"D",
"E"
],
"cores":{
"A":[{"key":"value"}],
"B":[{"key":"value"}],
"C":[{"key":"value"}],
"D":[{"key":"value"}],
"E":[{"key":"value"}]
}
}
I have achieved it in this way. 我是通过这种方式实现的。
String responseStr = //JsonResponse here
Type type = new TypeToken<GetMainResponse>() {}.getType();
GetMainResponse getMainResponse = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create().fromJson(responseStr, type);
int size = getMainResponse.getKeysArray().size();
for (int i = 0; i < size; i++) {
JSONArray jCoreIngredients = new JSONObject(responseStr)
.getJSONArray(getMainResponse.getKeysArray().get(i));
String innerStr = jCoreIngredients.toString();
Type type2 = new TypeToken<ArrayList<GetMainResponse.InnerCores>>() {}.getType();
ArrayList<GetMainResponse.InnerCores> ingredientsInner = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create().fromJson(innerStr, type2);
}
//And this is my POJO
public class GetMainResponse{
String result;
ArrayList<String> keysArray;
Cores cores;
public String getResult() { return result; }
public void setResult(String result) { this.result = result; }
public ArrayList<String> getKeysArray() { return keysArray; }
public void setKeysArray(ArrayList<String> keysArray) { this.keysArray = keysArray; }
public Data getCores() { return data; }
public void setCores(Cores cores) { this.cores = cores; }
public class Cores {
// No declaration and not getter setter here.
public class InnerCores {
String key;
public String getKey() { return key; }
public void setKey(String result) { this.key = key; }
}
}
Any suggestions :) 有什么建议么 :)
For this i will suggest to use Go To JsonSchema2Pojo 为此,我建议使用Go To JsonSchema2Pojo
To go there and select 要去那里选择
And click Preview at bottom side You will get the GSON based Model class 然后单击底部的“预览”。您将获得基于GSON的Model类
Try this out its a sample for getting about us status and description.Based on this code you can make yours. 尝试使用此示例来了解我们的状态和说明。您可以根据此代码制作自己的代码。 this is the code for your main page.
这是您主页的代码。
Gson gson = new Gson();
AboutUsRootObject joc = gson.fromJson(responseOutput.toString(), AboutUsRootObject.class);
resultStatus = joc.status;
resultOutputMsg = joc.message;
then create a new class as AboutUsRootObject.java and write this code: 然后创建一个新类,如AboutUsRootObject.java并编写以下代码:
public class AboutUsRootObject {
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public AboutUsData getData() {
return data;
}
public void setData(AboutUsData data) {
this.data = data;
}
public int status ;
public String message ;
public AboutUsData data ;
}
here you have defined getter setter for the data.Here data key has some more data in it multiple, as is its cores key in yours so again create a new class of getter setter similar as above and proceed. 在这里,您已经为数据定义了getter setter 。在这里, data密钥中包含多个数据,因为它的核心密钥在您的核中,所以再次创建一个新的类似于上面的getter setter类并继续。
try this: 尝试这个:
try {
JSONObject obj1 = new JSONObject(str);
Gson gson = new Gson();
Demo2 demo2 = gson.fromJson(obj1.toString(),Demo2.class);
data3 = gson.toJson(demo2);
Log.e("Main Activity",data3.toString());
}catch (JSONException e) {
e.printStackTrace();
}
and Demo2 class : 和Demo2类:
public class Demo2 {
private String result;
private ArrayList<String> keysArray;
private Core cores;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public ArrayList<String> getKeysArray() {
return keysArray;
}
public void setKeysArray(ArrayList<String> keysArray) {
this.keysArray = keysArray;
}
private class Core {
private ArrayList<ClassD> D;
private ArrayList<ClassE> E;
private ArrayList<ClassC> C;
private ArrayList<ClassB> B;
private ArrayList<ClassA> A;
public ArrayList<ClassA> getA() {
return A;
}
public ArrayList<ClassB> getB() {
return B;
}
public ArrayList<ClassC> getC() {
return C;
}
public ArrayList<ClassD> getD() {
return D;
}
public ArrayList<ClassE> getE() {
return E;
}
private class ClassA {
private String key;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
private class ClassB {
private String key;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
private class ClassC {
private String key;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
private class ClassE {
private String key;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
private class ClassD {
private String key;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
}
public Core getCores() {
return cores;
}
public void setCores(Core cores) {
this.cores = cores;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.