Java Google GSON嵌套哈希映射反序列化
在我当前的项目中,我在android中使用GSON库,我遇到了嵌套映射反序列化的问题。这就是初始json的样子Java Google GSON嵌套哈希映射反序列化,java,json,gson,Java,Json,Gson,在我当前的项目中,我在android中使用GSON库,我遇到了嵌套映射反序列化的问题。这就是初始json的样子 { "5":{ "id":5, "name":"initial name", "image_url":"uploads/71d44b5247cc1a7c56e62fa51ca91d9b.png", "status":"1", "flowers":{ "7":{ "id":7, "
{
"5":{
"id":5,
"name":"initial name",
"image_url":"uploads/71d44b5247cc1a7c56e62fa51ca91d9b.png",
"status":"1",
"flowers":{
"7":{
"id":7,
"category_id":"5",
"name":"test",
"description":"some description",
"price":"1000",
"image_url":"uploads/test.png",
"status":"1",
"color":"red",
}
}
}
}
还有我的波乔
class Category {
long id;
String name;
String image_url;
HashMap<String,Flower> flowers;
}
但是当我尝试反序列化这些对象时,我可以访问嵌套的hashmaps,示例代码是
public class TestJson {
public static void main(String[] args) {
Gson gson = new Gson();
try {
BufferedReader br = new BufferedReader(
new FileReader("2.txt"));
HashMap<String,Category> map = gson.fromJson(br, HashMap.class);
Collection<Category> asd = map.values();
System.out.println(map.values());
} catch (IOException e) {
e.printStackTrace();
}
}
}
公共类TestJson{
公共静态void main(字符串[]args){
Gson Gson=新的Gson();
试一试{
BufferedReader br=新的BufferedReader(
新的文件阅读器(“2.txt”);
HashMap=gson.fromJson(br,HashMap.class);
集合asd=map.values();
System.out.println(map.values());
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
有什么建议吗?Thisgson.fromJson(br,HashMap.class)代码>告诉Gson您要反序列化为未知值类型的映射。您可能会试图指定类似于Map.class
的内容,但在Java中无法做到这一点,因此解决方案是在Gson中使用他们称之为TypeToken的东西
Map<String, Category> categoryMap = gson.fromJson(br, new TypeToken<Map<String, Category>>(){}.getType());
Map categoryMap=gson.fromJson(br,new-TypeToken(){}.getType());
是的,我的代码中遗漏了TypeToken,因为修复工作非常完美。谢谢,谢谢。。这正是我半小时以来一直在寻找的:)
Map<String, Category> categoryMap = gson.fromJson(br, new TypeToken<Map<String, Category>>(){}.getType());