JSON 学习 一时失言乱红尘 2022-10-09 02:57 141阅读 0赞 ### JSON ### * 总结内容 * * 一、JSON 的定义 * 二、格式 * 三、在 JavaScript 中的 JSON * * 1. 表示 JSON * 2. JSON 与 JS 对象转换 * 四、Jackson * * 1. 添加依赖 * 2. API 使用 * 五、Fastjson * * 1. 添加依赖 * 2. API 使用 * 六、Spring MVC 响应 JSON * * 1. 通过 Map 方式 * 2. 通过自定义类方式 * 3. Controller 控制器 * 总结 # 总结内容 # ## 一、JSON 的定义 ## JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 JSON采用完全**独立于编程语言的文本格式来存储和表示数据**。这样的好处是易于阅读和编写,同时也易于机器解析和生成,并**有效的提升网络传输效率**。这样这些特性使JSON成为理想的数据交换格式。 ## 二、格式 ## **JSON 就是一种有格式的字符串**。 任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。 规则如下: 【1】**映射用冒号(“:”)表示**。示例如下:”名称” : 值,标准格式名称用双引号括起来; 【2】**并列的数据之间用逗号(“,”)分隔**。示例如下:”名称1” : 值1, ”名称2” : 值2; 【3】**映射的集合(对象)用大括号(“\{\}”)表示**。示例如下:\{”名称1” : 值1, ”名称2”: 值2\} 【4】**并列数据的集合(数组)用方括号(“\[\]”)表示**。示例如下: \[ \{”名称1” : 值, ”名称2” : 值2\}, \{”名称1” : 值, ”名称2” : 值2\} \] 元素值可具有的类型:string,number,object,array,true,false,null。 ## 三、在 JavaScript 中的 JSON ## ### 1. 表示 JSON ### <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script> // 写 JSON,这个格式的字符串里面存一个员工数据 id 1 name zs age 18 var json1 = '{"id":1,"name":"zs","age":18}'; // JSON // 写 JSON,这个格式的字符串里面存两个个员工数据 id 1,name zs,age 18;id 2,name ls,age 19 var json2 = '[{"id":1,"name":"zs","age":18}, {"id":2,"name":"ls","age":19}]'; // 写 JSON,这个格式的字符串里面存一个员工数据 id 1,name zs,age 18,部门 id 5,name 开发部 var json3 = '{"id":1, "name":"zs", "age":18, "dept":{"id":5, "name":"开发部"}}'; var jsObj1 = { "id":1, "name":"zs", "age":18}; // JS 对象 var jsObj2 = { id:1, name:"zs", age:18}; // JS 对象 console.log(json1.name); // undefined console.log(jsObj1.name); // zs console.log(jsObj2.name); // zs </script> </head> <body> </body> </html> ### 2. JSON 与 JS 对象转换 ### 浏览器环境提供一个工具类名叫JSON,里面提供方法帮我们实现 JSON 与 JS 对象之间的转换。接着在 上面页面的 script 标签中加入下面的代码: //假设获取到服务器响应的数据是 JSON 格式,想获取到具体数据怎么做? // 有一种方式切割字符串, 不可取的 // 另一种方式,JSON 是浏览器环境提供一个工具, 里面提供方法实现两者的转换 // JSON 字符串转 JS 对象(json1、json2 等,分别是上面案例中的值) console.log(JSON.parse(json1).age); // 获取 JSON 字符串中的 age 对应对值 console.log(JSON.parse(json2)); console.log(JSON.parse(json3).dept.name); // 把 json 字符串转为对象后,取对象中的部门属性中的 name 属性值 // JS 对象转 JSON 字符串 console.log(JSON.stringify(jsObj2)); var json4 = "{'id':1,'name':'zs','age':18}"; // 错误格式的 JSON,里面的键值要用双引号包裹起来,最外面用单引号就可以了 console.log(JSON.parse(json4)); // 报错 **注意**:**JSON格式字符串的键必须使用双引号包裹,没有例外。如果值是字符串,也必须使用双引号包裹,而不是单引号。** ## 四、Jackson ## ### 1. 添加依赖 ### <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.6</version> </dependency> ### 2. API 使用 ### public class JsonTest { @Test public void testJackson() throws Exception { Department department = new Department(); department.setId(1L); department.setName("开发部"); department.setSn("DEV"); ObjectMapper objectMapper = new ObjectMapper(); // Java 对象转 JSON System.out.println(objectMapper.writeValueAsString(department)); // JSON 转 Java 对象 System.out.println(objectMapper.readValue("{\"id\":1,\"name\":\"开发部\",\"sn\":\"DEV\"}", Department.class)); } } ## 五、Fastjson ## ### 1. 添加依赖 ### <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> ### 2. API 使用 ### public class JsonTest { @Test public void testFastjson() { Department department = new Department(); department.setId(1L); department.setName("开发部"); department.setSn("DEV"); // Java 对象转 JSON System.out.println(JSON.toJSONString(department)); // JSON 转 Java 对象 System.out.println(JSON.parseObject("{\"id\":1,\"name\":\"开发部\",\"sn\":\"DEV\"}", Department.class)); } } ## 六、Spring MVC 响应 JSON ## ### 1. 通过 Map 方式 ### public class JsonResult { private Long id; private Business business; private Date createTime; // java代码 public String toJson() { Map<String, Object> map = new HashMap<>(); map.put("id", id); map.put("businessId", this.business.getId()); map.put("createTime", new SimpleDateFormat("yyyy-MM-dd").format(createTime)); return JSON.toJSONString(map); } } ### 2. 通过自定义类方式 ### // java代码 @Setter @Getter public class JsonResult { private boolean success; private String msg; } ### 3. Controller 控制器 ### @Controller public class JsonController { @RequestMapping("/list") @ResponseBody public JsonResult getTime() { Date now = new Date(); JsonResult jsonResult = new JsonResult(); jsonResult.setSuccess(true); jsonResult.setMsg(now.toLocaleString()); return jsonResult; } } # 总结 # 以上就是对Shiro 安全框架入门的总结了,代码仅供参考,欢迎讨论交流。 下篇博客:[Shiro 安全框架详解二(概念+权限案例实现)][Shiro] [Shiro]: https://blog.csdn.net/zzvar/article/details/118026944
相关 JSON学习 1.JSON 语法是 JavaScript 对象表示语法的子集。 l 数据在名称/值对中 l 数据由逗号分隔 l 花括号保存对象 你的名字/ 2023年10月16日 21:36/ 0 赞/ 31 阅读
相关 json学习 一、json转对象 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson. 川长思鸟来/ 2023年05月31日 12:12/ 0 赞/ 12 阅读
相关 JSON 学习 JSON 总结内容 一、JSON 的定义 二、格式 三、在 JavaScript 中的 JSON 1. 一时失言乱红尘/ 2022年10月09日 02:57/ 0 赞/ 142 阅读
相关 JSON学习 1.JSON 语法是 JavaScript 对象表示语法的子集。 l 数据在名称/值对中 l 数据由逗号分隔 l 花括号保存对 灰太狼/ 2022年06月17日 13:26/ 0 赞/ 156 阅读
相关 JSON 学习 JavaScript Object Notation,JS 对象标记,是一种轻量级的数据交换格式。 [JSON 标准][JSON] JSON 介绍 简介 JS ╰半夏微凉°/ 2022年05月22日 23:18/ 0 赞/ 192 阅读
相关 JSON学习 JSON学习 [JSON][]([JavaScript][] Object Notation,JS对象简谱)是一种轻量级的数据交换格式。它基于 [ECMAScript][ 你的名字/ 2022年05月14日 18:34/ 0 赞/ 612 阅读
相关 json学习 [JSON字符串解析][JSON] [json在前后端数据交互中的应用][json] [Ajax+Json应用和实现省市联动][Ajax_Json] [JSON]: Dear 丶/ 2022年05月03日 08:00/ 0 赞/ 510 阅读
相关 JSON学习 1.JSON 语法是 JavaScript 对象表示语法的子集。 l 数据在名称/值对中 l 数据由逗号分隔 l 花括号保存对象 l 方括号保存数组 水深无声/ 2022年02月12日 13:45/ 0 赞/ 200 阅读
相关 JSON学习 文章目录 JSON介绍 概念 JSON使用 语法 JSON介绍 > [JSON官网][JSON] 概念 JSON 雨点打透心脏的1/2处/ 2021年09月29日 01:10/ 0 赞/ 255 阅读
还没有评论,来说两句吧...