`
zendj
  • 浏览: 115619 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论
阅读更多
初识JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

object
{}
{ members }

members
string : value
members , string : value
array
[]
[ elements ]
elements
value
elements , value
value
string
number
object
array
true
false
null
string
""
" chars "
chars
char
chars char
char
any-Unicode-except-"-or-\-or-control
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digits
number
int
int frac
int exp
int frac exp
int
digit
digit1-9 digits
- digit
- digit1-9 digits
frac
. digits
exp
e digits
digits
digit
digits digit
e
e
e+
e-
E
E+
E-

JSON建构于两种结构:

  • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

  • 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
  • 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
  • 值(value)可以是双引号括起来的字符串(string)、数值(number)、 ture、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
  • 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

JSON in JavaScript


JavaScript is a general purpose programming language that was introduced as the page scripting language for Netscape Navigator. It is widely believed to be a subset of Java, but it is not. It is a Scheme-like language with C-like syntax and soft objects. JavaScript was standardized in the ECMAScript Language Specification, Third Edition.

JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the language with no muss or fuss.

var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};

In this example, an object is created containing a single member "bindings", which contains an array containing three objects, each containing "ircEvent", "method", and "regex" members.

Members can be retrieved using dot or subscript operators.

myJSONObject.bindings[0].method    // "newURI"

To convert a JSON text into an object, use the eval() function. eval() invokes the JavaScript compiler. Since JSON is a proper subset of JavaScript, the compiler will correctly parse the text and produce an object structure.

var myObject = eval('(' + myJSONtext + ')');

The eval function is very fast. However, it can compile and execute any JavaScript program, so there can be security issues. The use of eval is indicated when the source is trusted. This is commonly the case in web applications when a web server is providing both the base page and the JSON data. There are cases where the source is not trusted. In particular, clients should never be trusted.

When security is a concern it is better to use a JSON parser. A JSON parser will only recognize JSON text and so is much safer:

var myObject = myJSONtext.parseJSON();

A JSON stringifier goes in the opposite direction, converting JavaScript data structures into JSON text. JSON does not support cyclic data structures, so be careful to not give cyclical structures to the JSON stringifier.

var myJSONText = myObject.toJSONString();
Demo:使用XML表示:
<comments></comments>
<comment></comment>
<comment></comment>
<comment></comment>


使用JSON:
{comments:[
{
id:1,
author:"someone1",
url:"http://someone1.x2design.net",
content:"hello"
},
{
id:2,
author:"someone2",
url:"http://someone2.x2design.net",
content:"hello"
},
{
id:3,
author:"someone3",
url:"http://someone3.x2design.net",
content:"hello"
}
]};

分享到:
评论

相关推荐

    JavaScript-初识ajax、ajax封装、及json简单实战案例(下).pdf

    JavaScript-初识ajax、ajax封装、及json简单实战案例(下)

    JSON初识

    转换的JAR包 博文链接:https://yaojialing.iteye.com/blog/585982

    10.1 初识正则表达式|正则表达式与JSON|Python3.8入门 & 进阶 & 原生爬虫实战完全解读

    10.1_初识正则表达式|正则表达式与JSON|Python3.8入门_&_进阶_&_原生爬虫实战完全解读

    国人:JSON-RPC之初识

    NULL 博文链接:https://liuzidong.iteye.com/blog/961323

    22-09-29-03_SqlSugarAcquaintance(初识SqlSuga之ConfigureOptions注入实现)

    SqlSugarAcquaintance(初识SqlSugarCore之最简注入)”中,数据库连接字符串被直接定义到“上下文”类的构造方法中,但这种实现方式只能用于示例性程序,对于工程程序来说这种实现方式不绝对不被允许的,数据库连接...

    230301-042shopDemo(初识第3方阿里云短信验证发送服务)

    /// 通过该类中的属性成员实例对“appsettings.json”文件中的第3方阿里短信服务相关数据等数据进行设定性读写操作,为当程序实现短信服务功能提供数据支撑。 /// 说明: /// 属性成员的名称必须与JSON键/值对中...

    Python中的正则表达式与JSON数据交换格式

    一、初识正则表达式 正则表达式 是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配快速检索文本、实现替换文本的操作 json(xml) 轻量级 web 数据交换格式 import re\na='C|C++|Java|C#|...

    22-09-24-04_uniAppVue3(初识HbuilderX之前移动前端App开发)

    本人学习vue的根本目标是为了让手机移动端的(前端)App通过跨域(Cors)操作和与后端的已经部署在IIS中的.Net(Core)... 使用Hbuilder默认模板新建的uin-app,并不包含有“package.json”文件,把“package.json”文件加载到

    MongoDB初识

    MongoDB入门资料,其中包括简介,语法,关键字等等。...其旨在为web应用提供可扩展的高性能数据库存储解决方案,将数据存储为一个文档,数据结构由键值对组成,类似于JSON对象,字段值可以包含其他文档,数组及文档数组

    PHP JWT初识及其简单示例

    JWT(JSON Web Token), 顾名思义就是可以在Web上传输的token,这种token是用JSON格式进行format的。它是一个开源标准(RFC 7519),定义了一个紧凑的自包含的方式在不同实体之间安全的用JSON格式传输信息。 由于现在很...

    php对mongodb的扩展(初识如故)

    为什么说“初识如故”呢,因为mongodb的数据存储格式是一种由于MongoDB的文档结构为BJSON格式(BJSON全称:BinaryJSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到...

    基于Pytorch的UNet语义分割模型与代码

    模型在FloodNet数据集上进行了训练,mIOU在0.83左右,可训练自己的数据集 建议在训练网络的时候将输入的训练集其切分为384x384的小图片后,再来进行训练 模型采用标准的UNet,可以采用如下方式训练你自己的模型 ...

    简单地读懂Bert代码

    Bert代码初识简单读懂代码modeling.py–定义一个bert模型的主体结构BertConfig类BertModel类中所需要的超参数定义从python dict中生成BertConfig的方法 from_dict(cls, json_object)定义从json中生成BertConfig的...

    python教程学习路线学习教程

    第1章初识Python 1.1Python 介绍 1.2Python IDE 开发工具 1.3Python 变量及基本类型 1.4Python 中复杂数据类型 第2章Python 基本语法 2.1数据运算 2.2选择结构 2.3循环结构 2.4for 循环 第3章函数 3.1自定义函数 3.2...

    three.js从入门到实战代码.zip

    2第二节 初识 3第三节 scene 4第四节 geometry 5第五节 material 06第六节 Light - 平行光案例 - 点光源案例 - 聚光灯光源 - 户外光案例 07第七节 camera - 透视相机和正交相机的对比 - 制作相机控制器 第...

    利用esp8266接入小爱同学,实现智能台灯的改造物联网初识

    硬件准备 1.继电器WIFI智能插座模块 2.USB转ESP8266WIFI模块 3.ESP8266模块 ...在附加开发版管理器网址里输入:http://arduino.esp8266.com/stable/package_esp8266com_index.json 第三步:打开工具=》

    spring-basic:弹簧基础

    spring-basic spring核心知识学习 弹簧芯 2015-05-18 ...初识spring aop AOP(注解) 弹簧 mvc 1.第一次Spring MVC 2.Spring MVC 查看JSON | XML | PDF 3.Spring MVC 查看JSON | XML | PDF | 卓越

Global site tag (gtag.js) - Google Analytics