1.使用阿里的fastjson
pom:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
主要API是: JSON.toJSONXXX()和JSON.parseXXX()
序列化:
String jsonString = JSON.toJSONString(obj);
反序列化:
VO vo = JSON.parseObject("...", VO.class);
泛型反序列化:
List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});
2.使用jackson
pom:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
主要API:ObjectMapper.writeValueAsString() 和 ObjectMapper.readValue()
private ObjectMapper mapper;(使用前需要實例化)
序列化:
try{
String jsonString = mapper.writeValueAsString(obj);
}catch(IOException e){
...
}
反序列化:
try{
VO vo = mapper.readValue("...", VO.class);
}catch(IOException e){
...
}
泛型反序列化:
try{
List<VO> list = mapper.readValue("...", new JavaType<List<VO>>() {});
}catch(IOException e){
...
}
3.使用谷歌的GSON
pom:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
主要API: toJson() 和 fromJson
private static final Gson gson = new Gson();
序列化:
String jsonString = gson.toJson(obj);
反序列化:
VO vo = gson.fromJson("...", VO.class);
泛型反序列化:
List<VO> list = gson.fromJson("...", new TypeToken<Collection<Integer>>(){}.getType());