发表于: 2018-03-15 23:33:04

4 621


今天完成的事情:
今天主讲小课堂,嘿嘿,跟着杨以杰师兄学了不少东西。

1.背景介绍

    JSON是由道格拉斯·克罗克福特在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。在这之前当时通用的数据交换语言是XML,但是道格拉斯·克罗克福特认为XML的生成和解析都过于麻烦,所以他提出一种更加简化的格式,就是我们现在使用的JSON。


    JSON(JavaScript Object Notation, JS对象表示法) 是一种轻量级的数据交换格式。它基于 ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式,但是也使用了类似于C语言家族的习惯来存储和表示数据。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。这些特性使JSON成为理想的数据交换格式。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。


2.知识剖析

在 JS 语言中,一切都是对象。因此,任何程序支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
 对象表示为键值对      数据由逗号分隔          花括号保存对象                方括号保存数组
JSON 键/值对
JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:{"firstName": "Json"},这很容易理解,等价于这条 JavaScript 语句:{firstName : "Json"}


3.常见问题

 1.JSON与JS对象的关系

2.JSON在javaweb中的运用

4.解决方案

JSON 与 JS 对象的关系?

很多人搞不清楚 JSON 和 Js 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。它和xml一样都是一种数据交换格式。

var obj = {a: 'Hello', b: 'World'};//这是一个 JSON 字符串,本质是一个字符串

3.JSON 和 JS 对象如何相互转换?

要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:                                                                                                  var json = JSON.stringify({a: 'Hello', b: 'World'});//结果是 '{"a": "Hello", "b": "World"}'

要实现从 JSON 转换为对象,使用 JSON.parse() 方法:                                                                                                                 var obj = JSON.parse('{"a": "Hello", "b": "World"}');//结果是 {a: 'Hello', b: 'World'}

5.编码实战

让我们来看看这个例子的代码。


6.扩展思考



7.参考文献

链接:https://baike.baidu.com/item/JSON/2462549?fr=aladdin                                                                      作者:百度百科
链接:http://www.runoob.com/json/json-intro.html                                                                                                                作者:菜鸟教程

8.更多讨论

1. 打了@ResponseBody 标签之后,所有类型return都会变成json对象传输给前端吗?
如果单纯只添加@ResponseBody的话,会自动转化成JSON数据,如果在对应的类上添加下面的类和注解的话,还可以转化成XML格式。下图可以看到一个对比结果。
importjavax.xml.bind.annotation.XmlRootElement;                                                                                                                  @XmlRootElement 

2. @ResponseBody 能直接返回基本数据类型给前端吗?
@ResponseBody返回的数据类型,基本上都是JSON数据类型,也就是JS对象的形式。需要经过转换才能使用。如果传递的是字符串的话,前端接收的就是字符串。
3.javaweb中,XML与JSON的优劣
https://www.cnblogs.com/SanMaoSpace/p/3139186.html                                                                                                         这位博主讲的比较详细深入,大家可以去看看。

明天计划的事情:搭建系统进行压测,提交任务六。


遇到的问题:

1.添加@ResponseBody后,前端接收不到值,弹出的窗口显示 Nan,也就是空。
刚好树威来小黑屋,他帮忙解决了了这个问题,其实就是浏览器没有清空缓存。
2.讲小课堂的时候,以杰大大问了一个@ResponseBody的返回基础类型值,但是进行测试是在POSTman进行的,只知道接收的是JSON类型的数据,在前端怎么都没办法测试。
后来和建峰好好问了问,后端传递的是JSON的值,那么前端需要对数据进行转换,方法体才能进行,但是HTML属于解释型语言,只会运行到那个地方才会报错,这就是为什么方法体不会执行的原因。也就是前端接收的基础类型,本质上都是JSON数据类型,而不是基础数据类型,需要转化成JS对象才能使用。

收获:

1.对@ResponseBody返回的值类型和JSON有了一个深入的认识。
2.对解释型语言与编译型语言有了一个更深入的理解。

进度

任务开始时间:2018年02月08日
任务预计demo时间:2018年03月16日
延期:延期一天
禅道:http://task.ptteng.com/zentao/project-task-490.html



返回列表 返回列表
评论

    分享到