目录
JSON概述
- JSON(JavaScript Object Notation,js对象标记),是一种轻量级的数据交换格式。
- 采用完全独立于编程语言的文本格式来存储和表示数据。
- 层次结构简洁、清晰
- 易于阅读编写,同时易于机器解析和生成,有效的提升网络传输效率。
JSON键值对:使用了保存 js 对象的一种形式。
JSON 和 JS对象:
//json,本质是一个字符串
{"name":"无敌敏","age":18,"sex":"女"}
//JS对象
{name: "无敌敏", age: 18, sex: "女"}
JSON 和 JavaScript 对象互换
1.实现从JS对象转换成为JSON字符串,使用JSON.stringify()方法:
//将js对象转换为json对象
var json = JSON.stringify(user);
console.log(json); //在控制台中输出
2.实现从JSON 转换成为JS对象,使用JSON.parse()方法:
//将json对象转换为js对象
var obj = JSON.parse(json);
console.log(obj);
Controller返回JSON数据
json的解析工具:jackson、FastJson...
使用jackson
导入它的jar包
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.3</version>
</dependency>
使用:
package com.damin.controller;
import com.damin.pojo.User;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
//@Controller
@RestController // = @Controller + @ResponseBody
public class UserController {
@RequestMapping("/j1")
//@ResponseBody//添加此注解它就不会走视图解析器,会直接返回一个字符串
public String json1() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
//创建一个对象
User user = new User("无敌敏", 18, "女");
String str = mapper.writeValueAsString(user);
return str;
}
@RequestMapping("/j2")
//@ResponseBody//添加此注解它就不会走视图解析器,会直接返回一个字符串
public String json2() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
ArrayList<User> userList = new ArrayList<User>();
User user1 = new User("wudimin1", 1, "女");
User user2 = new User("wudimin2", 2, "女");
User user3 = new User("wudimin3", 3, "女");
userList.add(user1);
userList.add(user2);
userList.add(user3);
String str = mapper.writeValueAsString(userList);
return str;
}
}
浏览器端:
解决JSON乱码问题
在配置文件中配置如下代码
<!-- JSON乱码问题配置-->
<mvc:annotation-driven>
<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>
使用FastJson
FastJson.jar是阿里开发的一款专门用于Java开发的包。
fastjson的POM依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
fastjson三个主要的类:
- JSONObject:代表json对象
- JSONarray:代表json对象数组
- JSON:代表 JSONObject 和 JSONarray 的转化
@RequestMapping("/j3")
public String json3(){
ArrayList<User> userList = new ArrayList<User>();
User user1 = new User("wudimin1", 1, "女");
User user2 = new User("wudimin2", 2, "女");
User user3 = new User("wudimin3", 3, "女");
userList.add(user1);
userList.add(user2);
userList.add(user3);
String s = JSON.toJSONString(userList);
return s;
}