JSON
一、什么是JSON
1、JSON,是一种轻量级的数据交换格式
2、采用完全独立于编程语言的文本格式来存储和表示数据
3、简洁和清晰的层次结构使得Json成为理想的数据交换语言
4、易于人阅读和编写,同时也易于机器解析和生成,并且有效地提高网络传参效率
5、对象标识为键值对,数据由逗号分隔
6、花括号保存对象
7、方括号保存数组
二、JSON和JavaScript的对象互换
1、将json对象转换为JavaScript对象,使用JSON.parse()方法。
2、将JavaScript对象转换为json对象,使用JSON.stringify()方法
<script type="text/javascript">
//编写一个JavaScript对象
var user={
name:"年华",
age:20,
sex:"女"
};
console.log(user);
//将js对象转换为json对象
var json=JSON.stringify(user);
console.log(json);
//将json对象转换为javascript对象
var obj=JSON.parse(json);
console.log(obj)
</script>
三、Controller返回JSON数据(java层面)
1、导入json jar包
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.4</version>
</dependency>
</dependencies>
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>Springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:com/zy/config/springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--过滤器--> <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-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乱码
<!--配置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<User> userList=new ArrayList<User>();
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 ;
}
正在学习中,有错误的地方,请多多指教!
浙公网安备 33010602011771号