【Day28】关于json数据交换的一些知识点

今天我们来讲一下JSON是什么以及JSON本身具有的优势和json的使用方法

首先我们来介绍一下JSON的概念:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

  1. JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  2. JSON 是轻量级的文本数据交换格式
  3. JSON 独立于语言 *
  4. JSON 具有自我描述性,更易理解

JSON类似于XML

  • JSON 是纯文本
  • JSON 具有“自我描述性”(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

但是和XML也有不同的地方
- 没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的 JavaScript eval() 方法进行解析
- 使用数组
- 不使用保留字
-
我们使用JSON的原因:

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用。

JSON的优势:JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON的语法及使用方法:

JSON的语法是JavaScript的对象表示语法的子集

  1. 数据在名称/值对中
  2. 数据由逗号分隔
  3. 花括号保存对象
  4. 方括号保存数组

名称/值对包括字段名称

"firstname" : "zhonglin"

这就等价于JavaScript里面的

firstName = "zhonglin"

JSON 对象在花括号中书写:

对象可以包含多个名称/值对:

    { "firstName":"zhonglin" , "lastName":"li" }

等价于这条JavaScript语句:

    firstName = "zhonglin"
    lastName = "li"

JSON 数组
JSON 数组在方括号中书写:
数组可包含多个对象:

{
"people": [
{ "firstName":"yun" , "lastName":"ma" },
{ "firstName":"zhonglin" , "lastName":"li" },
{ "firstName":"yue" , "lastName":"Jia" }
]
}

在上面的例子中,对象 “people” 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。

我们一般使用JSON的方法就是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

接下来我们先创建一个最简单的JSON实例,来自字符串的对象

    var txt = '{ "people" : [' +
    '{ "firstName":"yun" , "lastName":"ma" },' +
    '{ "firstName":"zhonglin" , "lastName":"li" },' +
    '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';

因为JSON是JS语法的子集,所以我们可以使用JS的函数eval()将一个JSON对象转化成一个JavaScript对象。eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。

这里有一点我们需要注意一下:

必须把文本包围在括号中,这样才能避免语法错误

首先我们var一个对象obj

var obj = eval ("(" + txt + ")");

然后我们在http中使用对象:

First Name: <span id="firstname"></span><br />
Last Name: <span id="lastname"></span><br />

<script type="text/javascript">

document.getElementById("firstname").innerHTML = obj.people[1].firstName
document.getElementById("lastname").innerHTML = obj.people[1].lastName
</script>

eval() 函数可编译并执行任何 JavaScript 代码。

这里需要注意的是:

这里可能存在潜在的安全问题

所以我们更安全的一种编译和执行JavaScript代码的方式是:

使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。

在浏览器中,这提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。

JSON 文件的文件类型是 “.json”
JSON 文本的 MIME 类型是 “application/json”

对于较老的浏览器可使用 JavaScript 库:https://github.com/douglascrockford/JSON-js

JSON 格式最初是由 Douglas Crockford 制定的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值