当前仓库属于关闭状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 0 Fork 11

codeglory/JSON格式化工具
关闭

forked from srcker/vue-json-format 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
wiki.html 23.82 KB
一键复制 编辑 原始数据 按行查看 历史
宅小达 提交于 2019-07-22 00:57 +08:00 . 初始化
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>什么是Json - Json.help</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="HandheldFriendly" content="True" />
<meta name="MobileOptimized" content="320" />
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="all" />
<meta name="author" content="json.cn" />
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/css/font-awesome.min.css" rel="stylesheet">
<link href="/static/css/app.min.css" rel="stylesheet">
<style type="text/css">
h1,
h2,
h3,
h4,
h5 {
font-weight: bold;
}
/* Brief */
#brief-intro-wrapper {
font-size: 15px;
}
#brief-intro {
padding: 25px 40px;
border: 1px solid #eee;
background-color: #FFFFFF;
border-top: none;
}
#brief-intro .object {
margin-top: 11px;
font-style: italic;
font-size: 16px;
}
#brief-intro .object .form {
margin-left: 28px;
font-size: 14px;
}
#brief-intro .object .form .value {
font-style: normal;
font-weight: bold;
}
#brief-intro .split {
margin-top: 18px;
border: 1px solid #eee;
}
</style>
<header id="header">
<nav>
<a class="logo" title="json.help">json.<span>help</span></a>
<ul>
<a href="/">在线解析</a>
<a href="/wiki.html">什么是JSON</a>
<a href="/code.html">JSON解析代码</a>
<a href="/component.html">JSON组件</a>
<a href="/git">GIT手册</a>
<a href="/markdown.html">MarkDown编辑器</a>
</ul>
</nav>
</header>
<main class="row-fluid">
<div class="col-md-9" style="padding:0;">
<div style="padding:40px 30px;line-height:30px;">
<div class="line">
<span class="bold">JSON</span>(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。它是基于
<a href="http://www.crockford.com/javascript" target="_blank">JavaScript Programming Language</a> ,
<a href="http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf" target="_blank">Standard ECMA-262 3rd Edition - December 1999</a> 的一个子集。 JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯(包括C, C++,
C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
</div>
<h4 class="line">JSON基于两种结构:</h4>
<p>
<div>JSON[1] 结构有两种结构[2] </div>
<div>json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构</div>
<ul>
<li>1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为
对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。</li>
<li>2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。</li>
</ul>
</p>
<pre class="bg-warning" style="padding:20px;"><code>
{
"animals": {
"dog": [
{
"name": "Rufus",
"age": 15
},
{
"name": "Marty",
"age": null
}
]
}
}
</code></pre>
<p>经过对象、数组2种结构就可以组合成复杂的数据结构了。</p>
<p class="line">
&ldquo;名称/值&rdquo;对的集合(A collection of name/value pairs)。不同的编程语言中,它被理解为
<span class="italic">对象(object)</span>,纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative
array)。 值的有序列表(An ordered list of values)。在大部分语言中,它被实现为数组(array),矢量(vector),列表(list),序列(sequence)。
</p>
<div class="line">
这些都是常见的数据结构。目前,绝大部分编程语言都以某种形式支持它们。这使得在各种编程语言之间交换同样格式的数据成为可能。
</div>
<h4 class="line">
JSON具有以下这些形式:
</h4>
<div class="line">
<span class="bold">对象(
<span class="italic">object</span></span> 是一个无序的&ldquo;&lsquo;名称/值&rsquo;&rdquo;集合。一个对象以&ldquo;{&rdquo;(左括号)开始,&ldquo;}&rdquo;(右括号)结束。每个&ldquo;名称&rdquo;后跟一个&ldquo;:&rdquo;(冒号);&ldquo;&lsquo;名称/值&rsquo;
&rdquo;之间使用&ldquo;,&rdquo;(逗号)分隔。
</div>
<div class="line">
<span class="bold">数组(
<span class="italic">array</span></span> 是值(value)的有序集合。一个数组以&ldquo;[&rdquo;(左中括号)开始,&ldquo;]&rdquo;(右中括号)结束。值之间使用&ldquo;,&rdquo;(逗号)分隔。
</div>
<div class="line">
<span class="bold">值(
<span class="italic">value</span></span> 可以是双引号括起来的字符串(
<code class="italic">string</code>)、数值(
<code>number</code>)、
<code>true</code>
<code>false</code>
<code>null</code>、对象(object)或者数组(array)。这些结构可以嵌套。
</div>
<div class="line">
<span class="bold">字符串(
<span class="italic">string</span></span> 是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
</div>
<div class="line">
JSON的字符串(
<span class="italic">string</span>)与C或者Java的字符串非常相似。
</div>
<div class="line">
<span class="bold">数值(
<span class="italic">number</span></span> 也与C或者Java的数值非常相似。只是JSON的数值没有使用八进制与十六进制格式。
</div>
<div class="line">
同时,可以在任意标记之间添加空白。
</div>
<h4>访问数据</h4>
<p>尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在
JavaScript 中使用下面这样的代码:
</p>
<code>people.programmers[0].lastName;</code>
<br/> 注意,数组索引是从零开始的。所以,这行代码首先访问 people变量中的数据;然后移动到称为 programmers的条目,再移动到第一个记录([0]);最后,访问 lastName键的值。结果是字符串值 “McLaughlin”。
下面是使用同一变量的几个示例。
<p>
<code>
people.authors[1].genre//Valueis"fantasy"
<br/> people.musicians[3].lastName//Undefined.Thisreferstothefourthentry,andthereisn'tone
<br/> people.programmers[2].firstName//Valueis"Elliotte"
<br/>
</code>
</p>
<p>利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。</p>
<h4>和XML的比较</h4>
<h5>可读性</h5>
JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。
<h5>可扩展性</h5>
XML天生有很好的扩展性,JSON当然也有,没有什么是XML可以扩展而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。
<h5>编码难度</h5>
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。
<h5>解码难度</h5>
<ul>XML的解析方式有两种:
<li>一是通过文档模型解析,也就是通过父标签索引出一组标记。例如:xmlData.getElementsByTagName("tagName"),但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。
</li>
<li>另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。
</li>
</ul>
<p>凡是这样可扩展的结构数据解析起来一定都很困难。</p>
<p>JSON也同样如此。如果预先知道JSON结构的情况下,使用JSON进行数据传递简直是太美妙了,可以写出很实用美观可读性强的代码。如果你是纯粹的前台开发人员,一定会非常喜欢JSON。但是如果你是一个应用开发人员,就不是那么喜欢了,毕竟xml才是真正的结构化标记语言,用于进行数据传递。
</p>
<p>而如果不知道JSON的结构而去解析JSON的话,那简直是噩梦。费时费力不说,代码也会变得冗余拖沓,得到的结果也不尽人意。但是这样也不影响众多前台开发人员选择JSON。因为json.js中的toJSONString()就可以看到JSON的字符串结构。当然不是使用这个字符串,这样仍旧是噩梦。常用JSON的人看到这个字符串之后,就对JSON的结构很明了了,就更容易的操作JSON。
</p>
<p>以上是在Javascript中仅对于数据传递的xml与JSON的解析。在Javascript地盘内,JSON毕竟是主场作战,其优势当然要远远优越于xml。如果JSON中存储Javascript复合对象,而且不知道其结构的话,我相信很多程序员也一样是哭着解析JSON的。
</p>
<p>除了上述之外,JSON和XML还有另外一个很大的区别在于有效数据率。JSON作为数据包格式传输的时候具有更高的效率,这是因为JSON不像XML那样需要有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输压力。
</p>
<div id="content-body-wrapper">
<div id="content-body">
<div class="line"></div>
<h4 class="line title">JSON 标准:</h4>
<h4 class="line title">RFC4627:</h4>
<div class="line">The
<span class="italic">application/json</span> Media Type for JavaScript Object Notation (JSON)</div>
<h4 class="line title">发布日期:</h4>
<div class="line">2006年7月</div>
<h4 class="line title">最后修订:</h4>
<div class="line">2010年7月</div>
<h4 class="line title">作者信息:</h4>
<div class="line">Douglas Crockford</div>
<div class="line">JSON.org</div>
<div class="line">EMail: douglas@crockford.com</div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line">最新版`
<span class="red bold">RFC4627</span>`下载</div>
<div class="line">
<!-- TXT -->
<a style="padding:5px 20px;border:solid 2px #15b374;border-radius:5px;" href="http://www.rfc-editor.org/rfc/rfc4627.txt"
target="_blank" title="RFC4627 TXT版下载">RFC4627 TXT版</a>
<!-- PDF -->
<a style="padding:5px 20px;border:solid 2px #15b374;border-radius:5px;" href="http://www.rfc-editor.org/rfc/pdfrfc/rfc4627.txt.pdf"
target="_blank" title="RFC4627 PDF版下载">RFC4627 PDF版</a>
</div>
<div class="clear"></div>
</div>
</div>
</div>
</div>
<div class="col-md-3" style="padding:0;">
<div id="brief-intro-wrapper">
<div id="brief-intro">
<div class="object">
object
<div class="form">
<span class="value">{}</code>
</span>
</div>
<div class="form">
<span class="value">{</span> members
<span class="value">}</span>
</div>
</div>
<div class="object">
members
<div class="form">pair</div>
<div class="form">pair, members</div>
</div>
<div class="object">
pair
<div class="form">
<code>string</code> : value</div>
</div>
<div class="object">
array
<div class="form">
<span class="value">[]</span>
</div>
<div class="form">
<span class="value">[</span> elements
<span class="value">]</span>
</div>
</div>
<div class="object">
elements
<div class="form">value</div>
<div class="form"> value , elements</div>
</div>
<div class="object">
value
<div class="form">
<code>string</code>
</div>
<div class="form">
<code>number</code>
</div>
<div class="form">
<code>object</code>
</div>
<div class="form">
<code>array</code>
</div>
<div class="form">
<span class="value">
<code>true</code>
</span>
</div>
<div class="form">
<span class="value">
<code>false</code>
</span>
</div>
<div class="form">
<span class="value">
<code>null</code>
</span>
</div>
</div>
<!-- Split -->
<div class="split"></div>
<!-- //Split -->
<div class="object">
String
<div class="form">
<span class="value">""</span>
</div>
<div class="form">
<span class="value">"</span> chars
<span class="value">"</span>
</div>
</div>
<div class="object">
chars
<div class="form">
<code>char</code>
</div>
<div class="form">
<code>char chars</code>
</div>
</div>
<div class="object">
char
<div class="form">any-Unicode-character-
<div class="form">except-"-or-\-or-</div>
<div class="form">control-character</div>
</div>
<div class="form">
<span class="value">
<code>\"</code>
</span>
</div>
<div class="form">
<span class="value">
<code>\\</code>
</span>
</div>
<div class="form">
<span class="value">
<code>\/</code>
</span>
</div>
<div class="form">
<span class="value">
<code>\b</code>
</span>
</div>
<div class="form">
<span class="value">
<code>\f</code>
</span>
</div>
<div class="form">
<span class="value">
<code>\n</code>
</span>
</div>
<div class="form">
<span class="value">
<code>\r</code>
</span>
</div>
<div class="form">
<span class="value">
<code>\t</code>
</span>
</div>
<div class="form">
<span class="value">
<code>\u</code>
</span> four-hex-digits</div>
</div>
<div class="object">
number
<div class="form">
<code>int</code>
</div>
<div class="form">
<code>int frac</code>
</div>
<div class="form">
<code>int exp</code>
</div>
<div class="form">
<code>int frac exp</code>
</div>
</div>
<div class="object">
int
<div class="form">
<code>digit</code>
</div>
<div class="form">
<code>digit1-9 digits</code>
</div>
<div class="form">
<code>- digit</code>
</div>
<div class="form">
<code>- digit1-9 digits</code>
</div>
</div>
<div class="object">
frac
<div class="form">. digits</div>
</div>
<div class="object">
exp
<div class="form">
<code>e digits</code>
</code>
</div>
</div>
<div class="object">
digits
<div class="form">
<code>digit</code>
</div>
<div class="form">
<code>digit digits</code>
</div>
</div>
<div class="object">
e
<div class="form">
<span class="value">
<code>e</code>
</span>
</div>
<div class="form">
<span class="value">
<code>e+</code>
</span>
</div>
<div class="form">
<span class="value">
<code>e-</code>
</span>
</div>
<div class="form">
<span class="value">
<code>E</code>
</span>
</div>
<div class="form">
<span class="value">
<code>E+</code>
</span>
</div>
<div class="form">
<span class="value">
<code>E-</code>
</span>
</div>
</div>
</div>
</div>
</div>
</main>
</body>
</html>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
HTML/CSS
1
https://gitee.com/codeglory/json-help.git
git@gitee.com:codeglory/json-help.git
codeglory
json-help
JSON格式化工具
master

搜索帮助