json格式

来源:互联网 发布:电脑编程 编辑:程序博客网 时间:2024/05/29 17:47

某天聊天时听到有人说,json必须以 { 开头,以 }结尾,顿时很无语。
Json到底该是什么样子,官方网站上说的很明白.
另外附上一个很不错的在线验证及格式化Json的网站:Json.cn
本文对Json的格式简单说下


  • Json简介
  • JavaScript中的对象
  • Json中的对象
  • Json的格式

Json简介

JSON是 JavaScript Object Notation 的缩写,它是一种数据交换格式,2002年由道格拉斯·克罗克福特(Douglas Crockford)发明的。
在它之前,大家都用XML来交换数据,XML是纯文本格式,本身不难,但是加上 DTD、XSD、XSLT 等一堆规范后就相当复杂了。


JavaScript中的对象

既然JSON是JavaScript Object Notation,我们就看看JavaScript中都有什么对象。
JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成, 一个普通的js对象用一个{...}表示,键值对以key : value形式声明。
除此之外还有 number、string、boolean等对象,可以通过 typeof obj来获取对象的类型,如下:

// 普通对象var obj = {    name   : "小明",    gender : "男",    age    : 28};// 空对象var o = null;// 数组对象var arr = [1, 2, 3];// 数字对象var num1 = 1;var num2 = 123.456;// 字符串var str = "abcde";// 布尔var bool = true;typeof obj; // objecttypeof o;   // objecttypeof arr; // objecttypeof num1; // numbertypeof num2; // numbertypeof str;  // stringtypeof bool; // boolean

上面例子中,虽然{}, null, []都是object,但是他们的形式不太一样。


Json中的对象

JSON中的对象来自于JavaScript中,总共以下这几种数据类型:

numberjs中的numberbooleanjs中的boolean, 即true或falsestringjs中的stringnulljs中的nullarrayjs中的的Array, 即[]形式的对象objectjs中的普通对象, 即{ … }形式的对象.

另外JSON还规定了字符集必须用UTF-8, 字符串必须用双引号"", 对象中的key也必须用双引号""
所以,以下的json都是正确的:

null"一个字符串"3.14[1, 2, 3, "asdf"]{"name" : "Rose", "age": 18}

注意:

  • {"name" : "Rose", "age": 18}是普通对象, 3.14也是一个对象,两者都是合法的json串
  • null, 3.14这样不是合法的json串,要表示多个对象,必须放到普通对象中以键值对的形式出现

Json的格式

像上面的说的,Json的值有一定的格式,应该是下面图中的样子:
Json值

其中的string就是正常的字符串, number就是数字,如整数、小数、负数等;

其中的object应是下图描述的样子:
Json的object

其中的array应是下图描述的样子:
Json的array