JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
JSON语法规则
JSON语法是JavaScript对象表示语法的子集,
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON书写格式:名称/值对
{
"scores":[
{"Chinese":"A","English":"B"},
{"Chinese":"A","English":"B"},
{"Chinese":"A","English":"B"}
]
}
JSON值类型:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true或false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
JSON的两种基本结构:
1、对象:“{}”,数据结构为{key:value,key:value,...}
取值方法:对象.key=?
2、数组“[]”,数据结构为["chinese","english","math",...]
取之方法:使用索引获取
基础示例:
名称/值对
{"chinese":"A"}
表示数组
{
"scores":[
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"}
]
}
{
"scores1":[
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"}
],
"scores2":[
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"}
],
"scores3":[
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"}
]
}
JavaScript中应用格式
JSON是JavaScript原生格式,所以在JavaScript中处理JSON数据不需要任何特殊的API或工具包。
var scores={
"scores":[
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"}
]
}
{
"scores1":[
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"}
],
"scores2":[
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"}
],
"scores3":[
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"},
{"chinese":"A","english":"B"}
]
}
访问数据:
var var1=scores.scores1[0].chinese
修改数据:
scores.scores1[0].chinese="A"
修改数据时需要把数据转换到文本格式
var newJSONtext=scores.toJSONString();
该文本字符串可以在任何地方使用,如Ajax中的请求字符串,可以将JavaScript对象转换为JSON文本,方式相同。
使用JSON只需调用一个简单的函数就可以获得经过格式化的数据,可以直接使用了。
JSON与XML比较
可读性:
JSON和XML不相上下,简易语法和规范的标签形式。
可扩展性:
都具有良好的可扩展性,但是在Javascript中JSON还是比较占优势,因为它可以存储Javascript符合对象。
编码的可读性:
xml比较容易读懂
json读起来费解但是适合机器阅读。
编码的手写难度:
xml会好写一些,但是标记繁琐。
json写出来内容比xml简单。