热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么两个看似相同的hashmaps在gson序列化时会有不同的行为?

如何解决《为什么两个看似相同的hashmaps在gson序列化时会有不同的行为?》经验,为你挑选了1个好方法。

输入:

public static void main(String[] args) {

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

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

    Map 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

Greg Kopff.. 21

因为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));

......它按预期工作.



1> Greg Kopff..:

因为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));

......它按预期工作.


推荐阅读
author-avatar
hz--Ives
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有