什么是JSON?
JSON(JavaScript Object Notation,JS对象标记语言),是一种轻量级的数据交换格式。
通常用于:
- 与服务器交换数据
- 在接收服务器数据时一般是字符串
- 可以使用JSON.parse() 方法将字符串解析为 JavaScript 对象
- 向服务器发送数据一般是字符串
- 可以使用JSON.stringify(),把JavaScript对象转为字符串
语法规格
JS中,一切皆对象,任何支持的类型都可以通过JSON来表示。例如,字符串、数字、数组、对象等。其中数组和对象是比较特殊且常用的两种类型:
- 对象表示为键值对
- 花括号保存对象:{"name1":"xxx", "name2":"xxx", "name3":"xxx", }
- 数据由逗号分隔
- 方括号保存数组【"xx","xxx","xxxx"】
测试
-
导包
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.3</version> </dependency>
-
spingmvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.kk.controller"/> <!--1.开启注解驱动--> <mvc:annotation-driven> <!--解决json乱码问题--> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8"/> </bean> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> <property name="failOnEmptyBeans" value="false"/> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <!--2.静态资源过滤--> <mvc:resources location="/js/" mapping="/js/**"/> <mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/img/" mapping="/img/**"/> <!--3.视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
-
controller
package com.kk.controller; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.kk.pojo.User; import com.kk.utils.JsonUtil; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Date; @Controller public class TestJson { @RequestMapping("/json") @ResponseBody public String json() throws JsonProcessingException { User user = new User(1, "柯神_", "男"); return new ObjectMapper().writeValueAsString(user); } @RequestMapping("/json1") @ResponseBody public String json1() throws JsonProcessingException { User user = new User(1, "柯神_", "男"); return JsonUtil.getJson(user); } @RequestMapping("/time1") @ResponseBody public String jsonT1() throws JsonProcessingException { return JsonUtil.getJson(new Date()); } @RequestMapping("/time2") @ResponseBody public String jsonT2() throws JsonProcessingException { return JsonUtil.getJson(new Date(),"yyyy-MM-dd HH:mm:ss"); } }
-
pojo
package com.kk.pojo; import java.io.Serializable; public class User implements Serializable { int id; String name; String sex; public User(int id, String name, String sex) { this.id = id; this.name = name; this.sex = sex; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", sex='" + sex + '\'' + '}'; } }
可以将json封装成一个工具类
package com.kk.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.text.SimpleDateFormat;
public class JsonUtil {
public static String getJson(Object o){
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(o);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
public static String getJson(Object o, String dataForm){
ObjectMapper mapper = new ObjectMapper();
//关闭时间戳
mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS,false);
//自定义时间格式
SimpleDateFormat sdf = new SimpleDateFormat(dataForm);
mapper.setDateFormat(sdf);
try {
return mapper.writeValueAsString(o);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}