Java 用Gson反序列化JSON
我获得了一个服务器响应,其中包含以以下方式构建的复杂对象:Java 用Gson反序列化JSON,java,json,deserialization,gson,Java,Json,Deserialization,Gson,我获得了一个服务器响应,其中包含以以下方式构建的复杂对象: json array of object type A with { jsonobject with a json array of object type B } 我正在尝试将其反序列化为我的对象typeA和对象typeB,如下例所示: public class ObjectA{ String a; int b; ArrayList<ObjectB>
json array of object type A with
{ jsonobject with a json array of object type B
}
我正在尝试将其反序列化为我的对象typeA和对象typeB,如下例所示:
public class ObjectA{
String a;
int b;
ArrayList<ObjectB> list;
}
public class ObjectB{
String a1;
int b2;
String c3;
}
如何将其反序列化?JSONArray jsArray=new JSONArray()//这是你最外层的JSONARRAY
JSONArray jsArray = new JSONArray(); //This is your outer most JSONARRAY
for(int i=0;i<jsArray.length;i++)
{
JSONObject innerJsonObj = jsArray.getJSONObject(i);//this is your inner jsonobject
Log.v("a",innserJsonObj.getString("a"));
Log.v("b",innserJsonObj.getString("b"));
Log.v("list",innserJsonObj.getString("list")); // you have to use another loop to deal with this json array
//to generate json array you can use:
JSONArray innerJsonArray = new JSONArray(innserJsonObj.getString("list"));
}
对于(int i=0;iJSONArray jsArray=new JSONArray();//这是最外层的JSONArray
对于(int i=0;i,由于您已经有了一个类层次结构,您可以利用它,让Gson为您完成所有工作。为了更好地解释我的意思,我准备了一段代码,准备运行:
package stackoverflow.questions.q18123430;
import java.lang.reflect.Type;
import java.util.*;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Q18123430 {
public static class ObjectA {
String a;
int b;
ArrayList<ObjectB> list;
@Override
public String toString() {
return "ObjectA [a=" + a + ", b=" + b + ", list=" + list + "]";
}
}
public static class ObjectB {
String a1;
int b2;
String c3;
@Override
public String toString() {
return "ObjectB [a1=" + a1 + ", b2=" + b2 + ", c3=" + c3 + "]";
}
}
public static void main(String[] args) {
String json = "[{ a:\"a\",b:1,list: [{a1:\"a1\",b2:2,c3:\"c3\"},{a1:\"a1\",b2:2,c3:\"c3\"}]}, { a:\"a\",b:1,list: [{a1:\"a1\",b2:2,c3:\"c3\"},{a1:\"a1\",b2:2,c3:\"c3\"}]}]";
Type listOfObjectA = new TypeToken<List<ObjectA>>() {
}.getType();
Gson g = new Gson();
ArrayList<ObjectA> result = g.fromJson(json, listOfObjectA);
System.out.println(result);
}
}
既然您已经有了一个类层次结构,您可以利用它,让Gson为您完成所有的工作。为了更好地解释我的意思,我准备了一个可以运行的代码:
package stackoverflow.questions.q18123430;
import java.lang.reflect.Type;
import java.util.*;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Q18123430 {
public static class ObjectA {
String a;
int b;
ArrayList<ObjectB> list;
@Override
public String toString() {
return "ObjectA [a=" + a + ", b=" + b + ", list=" + list + "]";
}
}
public static class ObjectB {
String a1;
int b2;
String c3;
@Override
public String toString() {
return "ObjectB [a1=" + a1 + ", b2=" + b2 + ", c3=" + c3 + "]";
}
}
public static void main(String[] args) {
String json = "[{ a:\"a\",b:1,list: [{a1:\"a1\",b2:2,c3:\"c3\"},{a1:\"a1\",b2:2,c3:\"c3\"}]}, { a:\"a\",b:1,list: [{a1:\"a1\",b2:2,c3:\"c3\"},{a1:\"a1\",b2:2,c3:\"c3\"}]}]";
Type listOfObjectA = new TypeToken<List<ObjectA>>() {
}.getType();
Gson g = new Gson();
ArrayList<ObjectA> result = g.fromJson(json, listOfObjectA);
System.out.println(result);
}
}
您可以在Java中使用Gson库在一行中进行反序列化,如下所示
String jsonInputStr = "your json string";
Gson gson = new Gson();
List<ObjectA> objectList = gson.fromJson(jsonInputStr, new TypeToken<List<ObjectA>>(){}.getType());
String jsonInputStr=“您的json字符串”;
Gson Gson=新的Gson();
List objectList=gson.fromJson(jsonInputStr,new TypeToken(){}.getType());
您可以在一行中使用Gson库在Java中反序列化,如下所示
String jsonInputStr = "your json string";
Gson gson = new Gson();
List<ObjectA> objectList = gson.fromJson(jsonInputStr, new TypeToken<List<ObjectA>>(){}.getType());
String jsonInputStr=“您的json字符串”;
Gson Gson=新的Gson();
List objectList=gson.fromJson(jsonInputStr,new TypeToken(){}.getType());
Canu用java对其进行反序列化?我想用java对其进行反序列化,问题是如何反序列化?是的,可以使用gson..String jsonInputStr=“your json String”;gson gson=new gson();List persons=gson.fromJson(jsonInputStr,new TypeToken(){}.getType());你能用java反序列化吗?我想用java反序列化,问题是如何反序列化?是的,你可以用gson反序列化..String jsonInputStr=“你的json字符串”;gson gson=new gson();List persons=gson.fromJson(jsonInputStr,new TypeToken(){}.getType());