JSON
一、什么是JSON
1、JSON,是一种轻量级的数据交换格式
2、采用完全独立于编程语言的文本格式来存储和表示数据
3、简洁和清晰的层次结构使得Json成为理想的数据交换语言
4、易于人阅读和编写,同时也易于机器解析和生成,并且有效地提高网络传参效率
5、对象标识为键值对,数据由逗号分隔
6、花括号保存对象
7、方括号保存数组
二、JSON和JavaScript的对象互换
1、将json对象转换为JavaScript对象,使用JSON.parse()方法。
2、将JavaScript对象转换为json对象,使用JSON.stringify()方法
三、Controller返回JSON数据(java层面)
1、导入json jar包
com.fasterxml.jackson.core jackson-databind 2.11.4
2、配置Springmvc需要的配置
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>Springmvcservlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class> <init-param> <param-name>contextConfigLocationparam-name> <param-value>classpath:com/zy/config/springmvc-servlet.xmlparam-value> init-param> <load-on-startup>1load-on-startup> servlet> <servlet-mapping> <servlet-name>Springmvcservlet-name> <url-pattern>/url-pattern> servlet-mapping> <filter> <filter-name>encodingfilter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class> <init-param> <param-name>encodingparam-name> <param-value>utf-8param-value> init-param> filter> <filter-mapping> <filter-name>encodingfilter-name> <url-pattern>/url-pattern> filter-mapping> web-app>
配置 springmvc-servlet.xml 文件,和springmvc里面的配置文件内容一样
3、编写一个实体列,测试controller
/*导入lombokjar包*/ @Data @AllArgsConstructor @NoArgsConstructor public class User { private String name; private int age; private String sex; }
controller.java
//@Controller //它会走视图解析器
@RestController //它不会走视图解析器 public class UserController { //运行出现乱码,对乱码进行设置 使用produces //1、手动解决乱码 //2、在xml配置json乱码 @RequestMapping(value = "/json",produces = "application/json;charset=utf-8")
// @ResponseBody //它不会走视图解析器,会直接返回一个字符串,与controller配套使用的 public String json1() throws JsonProcessingException { //jackson中的objectmapper ObjectMapper mapper = new ObjectMapper(); //创建一个对象 User user = new User("年华",3,"女"); String s = mapper.writeValueAsString(user); return s; } }
在springmvc中的xml配置json乱码
<mvc:annotation-driven>
<mvc:message-converters>
<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>
显示
创建一个数组/获取时间
@RequestMapping("/json1")
public String json2() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
//创建一个数组
List userList=new ArrayList();
User user = new User("年华",3,"女");
User user1 = new User("年华1",5,"女");
User user2 = new User("年华2",8,"女");
User user3 = new User("年华3",4,"女");
User user4 = new User("年华4",10,"女");
userList.add(user);
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
String s1 = mapper.writeValueAsString(userList);
return s1;
}
@RequestMapping("/json4")
public String json3() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
//使用 ObjectMapper来格式化输出,不使用时间戳
mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false);
//自定义格式
SimpleDateFormat spd = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
mapper.setDateFormat(spd);
//获取时间,
Date date = new Date();
String s1 = mapper.writeValueAsString(date);
//ObjectMapper ,时间解析后的默认格式为Timestamp 时间戳
/* String s = spd.format(date);*/
return s1 ;
}