Google GSON嵌套HashMaps反序列化

在我当前的项目中,我在android中使用GSON库,并且遇到了嵌套地图反序列化的问题。这就是初始json的样子

 {

"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",

}

}

}

}

而我的pojo的

class Category {

long id;

String name;

String image_url;

HashMap<String,Flower> flowers;

}

和花类

class Flower {

long id;

String category_id;

String name;

String description;

String price;

String image_url;

String status;

}

但是当我尝试反序列化此对象时,我可以访问嵌套的哈希图,示例代码为

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();

}

}

}

有什么建议?

回答:

gson.fromJson(br,

HashMap.class);告诉Gson您想反序列化为未知值类型的Map。您可能会想指定类似的东西Map<String,Category>.class,但是您无法在Java中进行指定,因此解决方案是使用他们在Gson中称为TypeToken的东西。

Map<String, Category> categoryMap = gson.fromJson(br, new TypeToken<Map<String, Category>>(){}.getType());

以上是 Google GSON嵌套HashMaps反序列化 的全部内容, 来源链接: utcz.com/qa/399375.html

回到顶部