1、定义
JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式。
2、格式
JSON 就是一种有格式的字符串。
JSON 与 JS 对象的关系
很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSON</title>
<script src="/static/jQuery-1.11/jquery-1.11.3.js"></script>
<script>
// 写 JSON,这个格式的字符串里面存一个员工数据 id 1 name zs age 18
var jsonStr1='{"id":1,"name":"张三","age":18}'
console.log(jsonStr1)
//alert(jsonStr1);
// 写 JSON,这个格式的字符串里面存两个个员工数据 id 1 name zs age 18 id 2 name ls age 19
var jsonStr2='[{"id":1,"name":"张三","age":18},{"id":2,"name":"李四","age":20}]'
console.log(jsonStr2);
// 写 JSON,这个格式的字符串里面存一个员工数据 id 1 name zs age 18 部门 id 5 name 开发部
var jsonStr3='[{"id":1,"name":"张三","age":18,"dept":{"id":5,"name":开发部}]'
console.log(jsonStr3);
//***********************************************************************************
//js 对象
console.log("下面打印的是js对象");
console.log("注意 对象 才能获取属性 , JSON 只是 字符串 , 不能直接获取属性 , 除非你去切割哈, 或者转为 对象再获取");
var jsObj1 = {"id":1,"name":"张三","age":18}
console.log(jsObj1);
console.log("获取name属性 : "+jsObj1.name);
var jsObj2 = {id:1, name:"zs", age:18};
console.log(jsObj2);
console.log("获取name属性 : "+jsObj2.name);
//***********************************************************************************
//***********************************************************************************
//下面 我们来演示下 JSON 与 js 对象的 转换
//用到 两个方法 : JSON.stringify() JSON.parse()
console.log("js对象转为JSON :"+JSON.stringify(jsObj1));
console.log(JSON.parse(jsonStr1));
// 字符串 + 对象 是打印不出来的哦
//例如 : console.log("JSON转为js对象 :"+ JSON.parse(jsonStr1)); 错误示范
//***********************************************************************************
</script>
</head>
<body>
<button type="submit" id="btn1">提交</button>
</body>
</html>
在JAVA 中的 JSON
两种方式 :
Jackson | Fastjson 记得添加依赖
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.6</version> </dependency>
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
Jackson ( 常用 )
(api : objectMapper.writeValueAsString(department) | objectMapper.readValue("{"id":1,"name":"小明","sn":"xm"}", Department.class))
public class JsonTest {
@Test
public void testJackson() throws IOException {
String jsonStr = "{\"id\":1,\"name\":\"张三\",\"age\":18}";
//JSON 与 Java 对象转换
// 开发中一般都会使用第三方的一些 JSON 操作的依赖或者 JAR 包来来完成 Java 对象与 JSON 字符串之间
// 的转换。
// 在 Java 中,转换 JSON 的依赖或者 JAR 有很多,这里单讲两种常用:
// Jackson:在 Spring MVC 中内置支持她,速度也挺快,稳定性比较好。
// Fastjson:阿里出品,号称是 Java 领域中转换 JSON 最快的一个插件,中文文档比较齐全。
//创建一个 java 对象
Department department = new Department(1L,"开发部","dev");
ObjectMapper objectMapper = new ObjectMapper();
//java对象 转 JSON
System.out.println(objectMapper.writeValueAsString(department));
//JSON 转 java对象 注意 要转成 什么类型的 java 对象 所以后面 需要 加多个参数
System.out.println(objectMapper.readValue("{\"id\":1,\"name\":\"小明\",\"sn\":\"xm\"}", Department.class));
}
Fastjson
(api : JSON.toJSONString(department) | JSON.parseObject("{"id":1,"name":"开发部","sn":"dev"}", Department.class)
@Test
public void testFastjson() throws IOException {
//创建一个 java 对象
Department department = new Department(1L,"开发部","dev");
//java对象 转 JSON
System.out.println(JSON.toJSONString(department));
//JSON 转 java对象 注意 要转成 什么类型的 java 对象 所以后面需要 加多个参数
System.out.println(JSON.parseObject("{\"id\":1,\"name\":\"开发部\",\"sn\":\"dev\"}", Department.class));
}
2、Spring MVC 响应 JSON 步骤
在 pom.xml 中添加 Jackson 依赖。
在 mvc.xml 配置 MVC 注解解析器。
定义一个类,里面提供对应属性封装数据。
在要响应 JSON 数据的控制器的处理方法上贴 @ResponseBody 注解,且方法返回类型为上面定义的类。
在处理方法中创建上面定义类 的对象,封装数据返回即可。
实例说话
@Controller
public class JsonController {
@RequestMapping("/getTime")
@ResponseBody //加了 这个 就不是跳转的意思 哦 注意
public JsonResult getTime(){
Date date = new Date();
JsonResult jsonResult = new JsonResult(true,date.toLocaleString());
return jsonResult;
//有了 注解 , 很简单 . 直接创建对象 使用注解 @ResponseBody 就会自动转成 JSON .
}
@Autowired
private IDepartmentService departmentService;
@RequestMapping("/getDepartments")
@ResponseBody //加了 这个 就不是跳转的意思 哦 注意
public List<Department> list(){
List<Department> departments = departmentService.selectAll();
return departments;
//有了 注解 , 很简单 . 直接创建对象 数组也可以 使用注解 @ResponseBody 就会自动转成 JSON .
}
}
网友评论