介绍几款常用的Json转换工具

介绍几款常用的Json转换工具Json序列化与反序列化工具,常用的有jackson、fastjson、Gson。其中fastjson性能最快,但是处理复杂类型的会有bug,我用的jackson,因为无需单独引入依赖,工程中基本会被其他包一起引入。一、jackson1、引入依赖<dependency><g

大家好,欢迎来到IT知识分享网。介绍几款常用的Json转换工具"

  Json序列化与反序列化工具,常用的有jackson、fastjson、Gson。其中fastjson性能最快,但是处理复杂类型的会有bug,我用的jackson,因为无需单独引入依赖,工程中基本会被其他包一起引入。

一、jackson

1、引入依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.10.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.0</version>
</dependency>

2、使用示例

ObjectMapper mapper = new ObjectMapper();

//序列化
String userStr = mapper.writeValueAsString(user);

//反序列化
User user= mapper.readValue(userStr,User.class);

//List序列化
List<User> userlist = new ArrayList<>();
... ...
userlist.add(user);
userlist.add(user2);
String listStr = mapper.writeValueAsString(userlist);

//List反序列化(转对象使用TypeReference,否则报LinkedHashMap类型转换错误)
List<User> userList = mapper.readValue(listStr,new TypeReference<List<User>>(){});
System.out.println(userList.get(0).getUserName());

//List反序列化(也可使用JavaType)
JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, User.class);
List<User> userList = mapper.readValue(listStr, javaType);

//Map序列化
Map<String,User> map = new HashMap<>();
... ...
map.put("u1",user);
map.put("u2",user2);
String mapStr = mapper.writeValueAsString(map);

//Map反序列化(使用TypeReference)
Map<String,User> tmpMap = mapper.readValue(mapStr, new TypeReference<Map<String,User>>() {});
System.out.println(tmpMap.get("u1").getUserId());

//Map反序列化(也可以使用JavaType)
JavaType javaType = mapper.getTypeFactory().constructParametricType(Map.class,String.class,User.class);
Map<String,User> tmpMap = mapper.readValue(mapStr, javaType);
System.out.println(tmpMap.get("u1").getUserId());

二、fastjson

1、引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

2、使用示例

//序列化
String userStr = JSON.toJSONString(user);

//反序列化
User user=JSON.parseObject(userStr, User.class);

//List序列化
List<User> list = new ArrayList<>();
... ...
list.add(user);
list.add(user2);
String listStr = JSON.toJSONString(list);

//List反序列化
List<User> userList= JSON.parseArray(listStr, User.class);
System.out.println(userList.get(0).getUserId());

//Map序列化
Map<String,User> map = new HashMap<>();
... ...
map.put("u1",user);
map.put("u2",user2);
String mapStr = JSON.toJSONString(map);
//Map反序列化 Map<String,User> tmpMap = JSON.parseObject(mapStr,new TypeReference<Map<String,User>>(){}); System.out.println(tmpMap.get("u1").getUserId());

三、Gson 

1、引入依赖

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

2、使用示例

Gson gson = new Gson();

//序列化
String userStr = gson.toJson(user);

//反序列化
User user = gson.fromJson(userStr,User.class);

//List序列化
List<User> list = new ArrayList<>();
... ...
list.add(user);
list.add(user2);
String listStr = gson.toJson(list);

//List反序列化
List<User> userList= gson.fromJson(listStr, new TypeToken<List<User>>(){}.getType());
System.out.println(userList.get(0).getUserId());

//Map序列化 
Map<String,User> map = new HashMap<>();
... ...
map.put("u1",user);
map.put("u2",user2);
String mapStr = gson.toJson(map);

//Map反序列化
Map<String,User> map2 = gson.fromJson(mapStr,new TypeToken<Map<String,User>>(){}.getType());
System.out.println(map2.get("u1").getUserId());

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31710.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信