gpt4 book ai didi

java - 为什么两个看似相同的 hashmap 在被 gson 序列化时有不同的行为?

转载 作者:太空狗 更新时间:2023-10-29 22:53:56 24 4
gpt4 key购买 nike

输入:

public static void main(String[] args) {

final String key = "some key";
final String value = "some value";

Map<String, String> map1 = new HashMap<String, String>(){{put(key, value);}};
System.out.println(new Gson().toJson(map1) + " " + map1.get(key));

Map<String, String> map2 = new HashMap<>();
map2.put(key, value);
System.out.println(new Gson().toJson(map2) + " " + map2.get(key));
}

输出:

null some value
{"some key":"some value"} some value

Process finished with exit code 0

最佳答案

对于 map1,您已经创建了一个匿名子类。假设包含 main() 的类名为 ExampleClass,则:

System.out.println(map1.getClass().getName())

打印出来:

ExampleClass$1

而打印 map2 的类会产生:

java.util.HashMap

至于 Gson 没有序列化它的确切原因——Gson 使用类名来查找转换器。如果您改为使用以下方式对其进行序列化:

System.out.println(new Gson().toJson(map1, HashMap.class));

...它按预期工作。

关于java - 为什么两个看似相同的 hashmap 在被 gson 序列化时有不同的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51778907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com