Json的使用
前言
写好了一个项目,总结一下jason的使用,String类型的数据与Jason类型的数据之间相互转化的json解析工具有:Jackson,阿里巴巴的fastjson。本篇文章着重介绍一下jackon
Jason的使用
1.导包
百度jackson-databind,到Maven仓库里找到jackson的依赖,写入pom.xml里
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
2.方法
ObjectMapper mapper =new ObjectMapper();
//将传入的值直接转换;
String parameter =mapper.writeValueAsString(传入值)
问题
1.乱码问题:
在@Requstmapping下的源码里发现有一个produces方法,这个就是来解决乱码的。
将@RequestMapping设置完路径后再加上一个值:
@RequestMapping(value = "/Test",produces="application/json;charest=utf-8")
就ok了 。
也可以去网上百度配置,一大堆懒得找了。
2.传时间问题
默认的是传输时间戳的格式,可以用
mapper.configure(SerializationFeature.WRITE_DATE_AS_TIMESTAMPS,false)关闭默认,后面就可以自定义日期格式了。
下面是我自己的代码
package com.jic.common.utils.jason;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.text.SimpleDateFormat;
/**
* @author LiHeYun
* @date 2020/7/30 14:14
*/
public class JsonUtils {
public static String getJson(Object object){
return getJson(object,"yyyy-MM-dd HH:mm:ss");
}
public static String getJson(Object object,String dateFormat){
ObjectMapper mapper=new ObjectMapper();
// 不使用时间戳的格式
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
// 自定义格式
SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
mapper.setDateFormat(sdf);
try {
return mapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}return null;
}
}
自己定义了一个utils包,把常用的工具都放里面了,这样下次再调的时候就直接JsonUtils.getJson就可以了。
FastJson的使用
1.导包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
2.方法
//JAVA对象转换为JSON字符串
String str1=JSON.toJSONString(userList);
//JSON字符串转换为JAVA对象
User jp_user1=JSON.parseObject(str2,User.class);
//JAVA对象转换为JSON对象
JSONObject jsonObject1=(JSONObject) JSON.toJSON(user2);
//JSON对象转JAVA对象
User to_java_user=JSON.toJavaObject(jsonObject1,User.class)