JSON是轻量级的文本数据交换格式
http://www.json.org.cn/
JSON经常应用到的场景是:在后台应用程序中将响应数据封装成JSON格式,传到前台页面之后,需要将JSON格式转换为JavaScript对象,然后在网页中使用该数据。
一个简单的 JSON 对象语法:
{ "name":"w3cschool", "alexa":8000, "site":null }JSON 对象使用在大括号({})中书写,数组使用[]来表示,对象可以包含多个 key/value(键/值)对。其中:
var myObj, x;
myObj = { "name":"w3cschool", "alexa":8000, "site":null };
x = myObj.name;实际开发中有时会需要将复杂的json数据转为java对象进行封装,可以使用一个比较使用的json工具,网址为: https://www.json.cn/json/json2java.html json格式化网址:https://www.bejson.com/
Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。 下面是几个常用的 JSON 解析类库:
SpringBoot使用Jackson作为默认Json解析器,当需要返回前端Json形式数据时使用Jackson将对象转化为Json数据格式返回当我们返回前端数据带有Date数据类型时,@JsonFormat注解很方便将日期转化为我们想要的数据格式返回
示例:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createDate;jackson将对象转为json字符串的方法
@Test
public void tranferObjectToJson() throws JsonProcessingException {
User user = new User();
ObjectMapper objectMapper = new ObjectMapper();
String str = objectMapper.writeValueAsString(user);
System.out.println(str);
}Java的String字符串转为对象(注意这里的转义字符)

spring中通常在Controller层加上@ResponseBody注解就会自动返回json数据
JsonFormat注解是jackson包里面的一个注解,因此在使用的时候需要引入 fasterxml maven的jar包,如下所示。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>引入fasterxml maven jar包之后,就可以在实体类属性上面使用@JsonFormat注解了,要注意的是,它只会在类似@ResponseBody返回json数据的时候,才会返回格式化的yyyy-MM-dd HH:mm:ss时间,你直接使用System.out.println()输出的话,仍然是类似“Fri Dec 01 21:05:20 CST 2017”这样的时间样式。
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ObjectMapperUtil {
private static final ObjectMapper mapper = new ObjectMapper();
// 将对象转化为json字符串
public static String toJSON(Object obj) {
String json=null;
try {
json = mapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return json;
}
public static <T> T toObject(String json, Class<T> target ) {
T t = null;
try {
t=mapper.readValue(json.getBytes(),target);
} catch (Exception e) {
// TODO: handle exception
}
return t;
}
}list中放String
{
"list": ["123","32","gfd","tyr"],
"name": "zhangsan"
}
List中存放对象的json 表示mea对象中只有一个name属性
{
"mea": [{"name":"张三"},{"name":"wangwu"}],
"name": "zhangsan"
}提供服务器端、安卓客户端两种解析工具,性能表现较好,也是目前企业开发中用的比较多的,但是fastjson之前也爆出过一些安全漏洞,见网址:https://github.com/alibaba/fastjson/wiki/security_update_20170315

实际使用时需要注意用的版本