CL *_* So 10 java json arraylist gson
我想将一个arraylist存储到磁盘,所以我使用gson将其转换为字符串
ArrayList<Animal> anim=new ArrayList<Animal>();
Cat c=new Cat();
Dog d=new Dog();
c.parentName="I am animal C";
c.subNameC="I am cat";
d.parentName="I am animal D";
d.subNameD="I am dog";
anim.add(c);
anim.add(d);
Gson gson=new Gson();
String json=gson.toJson(anim);
public class Animal {
public String parentName;
}
public class Cat extends Animal{
public String subNameC;
}
public class Dog extends Animal{
public String subNameD;
}
Run Code Online (Sandbox Code Playgroud)
输出字符串:
[{"subNameC":"I am cat","parentName":"I am animal C"},{"subNameD":"I am dog","parentName":"I am animal D"}]
Run Code Online (Sandbox Code Playgroud)
现在我想用这个字符串转换回arraylist
我知道我应该使用类似的东西:
ArrayList<Animal> anim = gson.fromJson(json, ArrayList<Animal>.class);
Run Code Online (Sandbox Code Playgroud)
但这是不正确的,正确的语法是什么?
Pra*_*ode 35
您可以使用以下代码将json转换为相应的对象列表
TypeToken<List<Animal>> token = new TypeToken<List<Animal>>() {};
List<Animal> animals = gson.fromJson(data, token.getType());
Run Code Online (Sandbox Code Playgroud)
科特林示例:
val gson = Gson()
val typeToken = object : TypeToken<ArrayList<Animal>>() {}
val list = gson.fromJson<ArrayList<Animal>>(value, typeToken.type)
Run Code Online (Sandbox Code Playgroud)
更快的方法:
val gson = Gson()
val array = gson.fromJson<Array<Animal>>(value, Array<Animal>::class.java)
val arrayList = ArrayList(array.toMutableList())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21149 次 |
| 最近记录: |