JSON语法可以分为三种类型:

简单值

对象

数组

简单值:

5
"Hello World"

JavaScript字符串与JSON字符串的最大区别在于,JSON字符串必须使用双引号

对象:

JSON中的对象与JavaScript字面量稍微有一些不同。下面是一个JavaScript中的对象字面量

var person={
name:"Qianwei",
age:22
}

这虽然是开发人员在JavaScript中创建对象字面量的标准方式,但JSON中的对象要求给属性加引号。

{
"name":"Qianwei",
"age":22
}

与JavaScript的对象字面量相比,JSON对象有两个地方不一样。首先,没有申明变量(JSOn中没有变量的概念)。其次,没有末尾的分号(因为这不是JavaScript语句,所以不需要分号)。再说一遍,对象的属性必须加引号,这在JSON中是必须的。属性的值可以是简单值,也已是复杂类型值。

{
"name": "Qianwei",
"age": 22,
"school": {
"name": "anqing",
"lOaction": "Anqing"
}
}

这个例子在顶级对象中嵌入了学校信息。虽然有两个“name”属性,但是是不一样的。

数组:

JSON中的第二种复杂数据类型是数组。JSON数组采用的就是JavaScript中的数组字面量形式:

var value = [25,"hi",true]

在JSON中,可以采用同样的语法表示同一个数组:

[{
"title": "Pro",
"author": "Qianwe",
"edition": 3,
"year": 2100
},
{
"title": "Pro",
"author": "Qianwe",
"edition": 4,
"year": 2100
},
{
"title": "Pro",
"author": "Qianwe",
"edition": 2,
"year": 2100
}
]

解析和序列化:

可以把JSON数据结构解析为有用的JavaScript对象。

[{
"title": "Pro",
"author": "Qianwe",
"edition": 3,
"year": 2100
},
{
"title": "Pro1",
"author": "Qianwe",
"edition": 4,
"year": 2100
},
{
"title": "Pro2",
"author": "Qianwe",
"edition": 2,
"year": 2100
}
] ------------------------------------------------------------
books[2].title //pro2

JSON对象:

JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生的JavaScript值。

    var books = {
"title": "Pro",
"author": "Qianwe",
"edition": 4,
"year": 2100
}; var jsonText = JSON.stringify(books); console.log(jsonText) //{"title":"Pro","author":"Qianwe","edition":4,"year":2100}
console.log(typeof jsonText) //string
var books = {
"title": "Pro",
"author": "Qianwe",
"edition": 4,
"year": 2100
}; var jsonText = JSON.stringify(books); console.log(jsonText) //{"title":"Pro","author":"Qianwe","edition":4,"year":2100}
console.log(typeof jsonText) //string var parseText = JSON.parse(jsonText);
console.log(parseText)
/*
{title: "Pro", author: "Qianwe", edition: 4, year: 2100}
author
:
"Qianwe"
edition
:
4
title
:
"Pro"
year
:
2100
__proto__
:
Object
*/
console.log(typeof parseText) //object

理解JSON的语法的更多相关文章

  1. 深入理解JSON对象

    × 目录 [1]语法规则 [2]stringify [3]parse[4]eval 前面的话 json(javascript object notation)全称是javascript对象表示法,它是 ...

  2. JSON:如果你愿意一层一层剥开我的心,你会发现...这里水很深——深入理解JSON

    我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题,请问,以下JS对象通过JSON.stringify后的字符串是怎样的?先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看 ...

  3. 深入理解 JSON

    我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题,请问,以下JS对象通过JSON.stringify后的字符串是怎样的?先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看 ...

  4. 理解JSON:3分钟课程

    理解JSON:3分钟课程 博客分类: Java综合 jsonAjaxJavaScriptXMLLISP 本文是从 Understanding JSON: the 3 minute lesson 这篇文 ...

  5. Json的语法及使用方法

    Json的语法及使用方法 Json(JavaScript Object Notation)对象表示标识,是一种轻量级的数据交换语言,比XML更容易解析,独立于语言和平台. 语法规则: 对象用{}保存 ...

  6. JSON.stringify 语法实例讲解+easyui data-options属性+expires【申明:来源于网络】

    JSON.stringify 语法实例讲解+easyui data-options属性+expires[申明:来源于网络] JSON.stringify 语法实例讲解:http://www.jb51. ...

  7. [转]JSON.stringify 语法实例讲解

    原文地址:http://www.jb51.net/article/29893.htm 作用:这个函数的作用主要是为了系列化对象的. 可能有些人对系列化这个词过敏,我的理解很简单.就是说把原来是对象的类 ...

  8. JSON.stringify 语法解释

    行为:此函数的作用主要是串行化对象. 或许有些人是过敏的字系列.我非常理解easy.是对象的类型转换成字符串类型(或者更确切的说是json类型的).就这么简单.打个例如说,你有一个类,那么你能够通过这 ...

  9. json基础教程|理解Json

    一. 在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式.这一期讨论一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地 ...

随机推荐

  1. hdu1398 Square Coins(母函数)

    题目类似于整数拆分,很明显用母函数来做. 母函数的写法基本固定,根据具体每项乘式的不同做出一些修改就行了.它的思路是从第一个括号开始,一个括号一个括号的乘开,用c1数组保存之前已经乘开的系数,即c1[ ...

  2. BZOJ5341: [Ctsc2018]暴力写挂

    BZOJ5341: [Ctsc2018]暴力写挂 https://lydsy.com/JudgeOnline/problem.php?id=5341 分析: 学习边分治. 感觉边分治在多数情况下都能用 ...

  3. Python函数-all()

    all(iterable) 作用: 如果iterable的所有元素不为0.''.False或者iterable为空,all(iterable)返回True,否则返回False:函数等价于: def a ...

  4. Python collections系列之有序字典

    有序字典(orderedDict ) orderdDict是对字典类型的补充,他记住了字典元素添加的顺序 1.创建一个有序字典 import collections dic = collections ...

  5. 基于 WebSocket 的 MQTT 移动推送方案

    WebSphere MQ Telemetry Transport 简介 WebSphere MQ Telemetry Transport (MQTT) 是一项异步消息传输协议,是 IBM 在分析了他们 ...

  6. Docker资源

    1.Docker入门教程 http://www.code123.cc/docs/docker-practice/repository/config.html 2.Docker入门教程 http://w ...

  7. [转] CentOS系统目录学习

    最近初学Linux 对linux的目录产生了很多疑问,看到这篇文章,让我顿时对目录有了一个清晰的认识!推荐给大家! ------------------------------------------ ...

  8. 机器学习:集成学习(Ada Boosting 和 Gradient Boosting)

    一.集成学习的思路 共 3 种思路: Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果: Boosting(增强集成学习):集成多个模型,每个 ...

  9. binlog之一:binary log初探

    MySQL Binary Log也就是常说的bin-log,是mysql执行改动产生的二进制日志文件,其主要作用有两个: Replication(主从数据库):在master端开启binary log ...

  10. struts2中常用constant命令配置

    struts.objectFactory这个属性用 于说明Struts2的 对象池创建工厂,Struts2也有自己的对象池,就像Spring那样,在配置文件中你可以引用对象池中的对象,你可以借助于Sp ...