博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript:JSON 和 JS 对象
阅读量:6377 次
发布时间:2019-06-23

本文共 2446 字,大约阅读时间需要 8 分钟。

区别

JSON(JavaScript Object Notation)仅仅是一种数据格式(或者叫数据形式)。数据格式其实就是一种规范,按照这种规范来存诸和交换数据。就好像 XML 格式一样。

区别 Json Javascript对象
含义 仅仅是一种数据格式 对象的实例
传输 可以跨平台数据传输,速度快 不能传输
表现 1. 键值对
2. 键必须加双引号
3. 值不能为方法函数/undefined/NaN
1.键值对
2.值可以是函数、对象、字符串、数字、boolean 等
相互转换 Json → JS 对象:
1. var obj = JSON.parse(jsonstring);
2. var obj = eval("("+jsonstring+")");
JS 对象 → Json:
JSON.stringify(obj);

JSON 文本格式在语法上与创建 JavaScript 对象的代码相同,但本质是不同的。我们不能把以下的对象叫 JSON,比如:

var obj1 = {}; // 这只是 JS 对象// 可把这个称做:JSON 格式的 JavaScript 对象 var obj2 = {"width":100,"height":200,"name":"rose"};// 可把这个称做:JSON 格式的字符串var str1 = '{"width":100,"height":200,"name":"rose"}';// 这个可叫 JSON 格式的数组,是 JSON 的稍复杂一点的形式var arr = [    {"width":100,"height":200,"name":"rose"},    {"width":100,"height":200,"name":"rose"},    {"width":100,"height":200,"name":"rose"},];        // 这个可叫稍复杂一点的 JSON 格式的字符串     var str2='['+    '{"width":100,"height":200,"name":"rose"},'+    '{"width":100,"height":200,"name":"rose"},'+    '{"width":100,"height":200,"name":"rose"},'+']';

但 JSON 和 JavaScript 确实存在渊源,JSON 本身的意思就是 JavaScript 对象表示法(JavaScript Object Notation),可以说这种数据格式是从 JavaScript 对象中演变出来的。JSON 语法是 JavaScript 对象表示法语法的子集

JSON 格式的数据,主要是为了跨平台交流数据用的。JSON 独立于语言和平台,JSON 解析器和 JSON 库支持许多不同的编程语言。

语法

1、JSON 语法规则:

  • 数据在名称/值对中

  • 数据由逗号分隔

  • 花括号保存对象

  • 方括号保存数组

2、JSON 数据值:

  • 数字(整数或浮点数)

  • 字符串(在双引号中)

  • 逻辑值(true 或 false)

  • 数组(在方括号中)

  • 对象(在花括号中)

  • null

JSON 数据结构有两种,这两种结构就是对象和数组,通过这两种结构可以表示各种复杂的结构。

JSON 使用严格的 JavaScript 对象表示法来表示结构化的数据,因此 JSON 的属性名必须有双引号

{    "company": "Apple",    "age": 18,    "IPO", true,    "employees": [        { "firstName":"John" , "lastName":"Doe" },         { "firstName":"Anna" , "lastName":"Smith" },         { "firstName":"Peter" , "lastName":"Jones" }    ]}

数据转换

JSON 数据转换为 JS 对象

1、JS 解析器:eval() 函数

// 创建包含 JSON 语法的 JavaScript 字符串var txt = '{ "employees" : [' +  '{ "firstName":"John" , "lastName":"Doe" },' +  '{ "firstName":"Anna" , "lastName":"Smith" },' +  '{ "firstName":"Peter" , "lastName":"Jones" } ]}';//使用 JS 解析器,解析 JSON 文本并生成 JS 对象var obj = eval("(" + txt + ")");

使用 eval() 函数时,必须为传入的 JSON 数据参数添加括号'()',否则会报语法错误。

2、 解析器:parse()函数

但 eval() 的问题在于,除了可以解析 JSON 数据,也可以用于执行 JavaScript 脚本片段,这就会带来潜在的安全问题。JSON 提供了专门的 JSON Parser 来实现只用于解析 JSON 数据,不会执行 JavaScript 脚本,而且速度更快。如下:

var obj = JSON.parse(txt);

较新的浏览器和最新的 ECMAScript (JavaScript) 标准中均包含了原生的对 JSON 的支持。

JS 数据转换为 JSON 文本

使用 JSON.strigify() 函数,将 Javascript 对象转换为 JSON 文本数据。

var obj = {a:1,b:2}var txt = JSON.stringify(obj);console.log(txt);结果:"{"a":1,"b":2}"

转载地址:http://znnqa.baihongyu.com/

你可能感兴趣的文章
[转]基于BootStrap 的城市三级联动
查看>>
改变字体大小的媒体查询代码封装
查看>>
ORA-00257 archiver error. 错误的处理方法
查看>>
CTC loss 理解
查看>>
向linux内核版本号添加字符/为何有时会自动添加"+"号或者"xxx-dirty"【转】
查看>>
[PHP]算法-最长公共子串的PHP实现
查看>>
开发H5游戏引擎的选择:Egret或Laya?
查看>>
Connection reset by peer原理解析
查看>>
ASP.NET Core 搭配 Nginx 的真实IP问题
查看>>
java操作redis之按照关键字删除缓存数据
查看>>
Spring Security教程(三):自定义表结构
查看>>
MySql与python交互
查看>>
用Docker下搭建GitLab
查看>>
【转】AlphaGO Zero 原理
查看>>
字符串匹配算法——KMP算法
查看>>
MySQL执行计划的讲解
查看>>
Membership学习(四)-自定义MembershipProvider[xgluxv]
查看>>
(原創) 累 (日記)
查看>>
(轉貼) 比K書更重要的事 (Misc)
查看>>
(原創) 本學期課表 (日記)
查看>>