JSON的学习与使用 (5)

示例代码

public static void main(String[] args) {
    //1. bean 和 json 互转
    Person person = new Person("xiaoli",18);
    String json = GsonUtil.bean2json(person);
    System.out.println(json);
    Person person2 = (Person)GsonUtil.json2bean(json, Person.class);
    System.out.println(person2.toString());

    //2. list 和 json 互转
    List<Person> list = new ArrayList<Person>();
    list.add(new Person("李四",10));
    list.add(new Person("王五",20));
    String listJson = GsonUtil.list2json(list);
    System.out.println(listJson);
    List json2List = GsonUtil.json2List(listJson);
    System.out.println(json2List.toString());

    //3. map 转 json
    Map<String,Person> map = new HashMap<String,Person>();
    map.put("map1",new Person("李四",10));
    map.put("map2",new Person("王五",20));
    String mapJson = GsonUtil.map2json(map);
    System.out.println(mapJson);
    Map<Object, Object> map2 = GsonUtil.json2Map(mapJson);
    System.out.println(map2.toString());

    //4. set 与 json 互转
    Set<Person> set = new LinkedHashSet<Person>();
    set.add(new Person("李四",10));
    set.add(new Person("王五",20));
    String setJson = GsonUtil.set2json(set);
    System.out.println(setJson);
    Set set1 = GsonUtil.json2Set(setJson);
    System.out.println(set1.toString());
}


运行结果:
{"name":"xiaoli","age":18}
Person(name=xiaoli, age=18)
[{"name":"李四","age":10},{"name":"王五","age":20}]
[{name=李四, age=10.0}, {name=王五, age=20.0}]
{"map2":{"name":"王五","age":20},"map1":{"name":"李四","age":10}}
{map2={name=王五, age=20.0}, map1={name=李四, age=10.0}}
[{"name":"李四","age":10},{"name":"王五","age":20}]
[{name=李四, age=10.0}, {name=王五, age=20.0}]

小结

Gson 是 Google 开发的,所以也是经过了很多的验证。但是将字符串解析为指定的集合类型需要花点信息,因为涉及到了泛型—TypeToken 。

具体的 Gson 文章详见:Gson使用指南

Jackson

Github 地址:jackson

简单介绍一下 Jackson:

Jackson 是基于 Stream 构建的一款用户序列化和反序列化 JSON 的 Java 开源库。

社区活跃,更新速度快。

Spring MVC 的默认 JSON 解析器。

擅长处理各种大量数据格式模块。

Jackson 的核心模块由三部分组成。

jackson-core,核心包,提供基于「流模式」解析的相关 API,它包括 JsonPaser 和 JsonGenerator。

jackson-annotations,注解包,提供标准注解功能。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzfjp.html