Json对象的格式

某天聊天时听到有人说,json必须以 { 开头,以 }结尾,顿时很无语。
Json到底该是什么样子,官方网站上说的很明白.
另外附上一个很不错的在线验证及格式化Json的网站:Json.cn
本文对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; // object
typeof o;   // object
typeof arr; // object

typeof num1; // number
typeof num2; // number
typeof str;  // string
typeof bool; // boolean

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


Json中的对象

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

number js中的number
boolean js中的boolean, 即true或false
string js中的string
null js中的null
array js中的的Array, 即[]形式的对象
object js中的普通对象, 即{ … }形式的对象.

另外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