JSON:Java Script Object Notation(JavaScript对象表示法)
JSON是存储和交换文本信息的语法。类似XML。
JSON比XML更小、更快、更容易解析。
JSON 实例
{
"sites": [
{ "name":"MrZhong" , "url":"cn.Mr.Neng" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" }
]
}
//这个sites对象时包含3个站点记录(对象)的数组。
目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
JSON - 转换为 JavaScript 对象
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。
由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。
//代码演示
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Json</title>
</head>
<body>
<h2>JavaScript 创建 JSON 对象</h2>
<p>
网站名称: <span id="jname"></span><br />
网站地址: <span id="jurl"></span><br />
网站 slogan: <span id="jslogan"></span><br />
</p>
<script>
var JSONObject= {
"name":"MrZhong",
"url":"cn.Mr.Neng",
"slogan":"学的不仅是技术,更是梦想!"
};
//document.getElementById("jname"):获得id为jname
//.innerHTML:给他文本
//=JSONObject.name:JSONObject中的name属性
document.getElementById("jname").innerHTML=JSONObject.name
document.getElementById("jurl").innerHTML=JSONObject.url
document.getElementById("jslogan").innerHTML=JSONObject.slogan
</script>
</body>
</html>
//运行结果
JavaScript 创建 JSON 对象
网站名称: 菜鸟教程
网站地址: www.runoob.com
网站 slogan: 学的不仅是技术,更是梦想!
与 XML 相同之处
- JSON 是纯文本
- JSON 具有"自我描述性"(人类可读)
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
与 XML 不同之处
- 没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的 JavaScript eval() 方法进行解析
- 使用数组
- 不使用保留字
为什么使用 JSON?
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:
使用 XML
- 读取 XML 文档
- 使用 XML DOM 来循环遍历文档
- 读取值并存储在变量中
使用 JSON
- 读取 JSON 字符串
- 用 eval() 处理 JSON 字符串
JSON 语法
JSON 语法是 JavaScript 语法的子集。
JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 大括号保存对象
- 中括号保存数组
JSON 值
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
JSON 数字
JSON 数字可以是整型或者浮点型:
{ "age":30 }
JSON 对象
JSON 对象在大括号({})中书写:
对象可以包含多个名称/值对:
{ "name":"MrNeng" , "url":"cn.Mr.Neng" }
这一点也容易理解,与这条 JavaScript 语句等价:
name = "MrNeng" url = "cn.Mr.Neng"
JSON 布尔值
JSON 布尔值可以是 true 或者 false:
{ "flag":true }
JSON null
JSON 可以设置 null 值:
{ "haha":null }
JSON 使用 JavaScript 语法
因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。
通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:
实例
var sites = [
{ "name":"haha" , "url":"www.runoob.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" }
];
可以像这样访问 JavaScript 对象数组中的第一项(索引从 0 开始):
sites[0].name;
返回的内容是:
runoob
可以像这样修改数据:
sites[0].name="哈哈";
//代码演示
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>cn.Mr.Neng</title>
</head>
<body>
<h2>JavaScript 创建 JSON 对象</h2>
<p>第一个网站名称: <span id="name1"></span></p>
<p>第一个网站修改后的名称: <span id="name2"></span></p>
<script>
var sites = [
{ "name":"MrZhong" , "url":"cn.Mr.Neng" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" }
];
document.getElementById("name1").innerHTML=sites[0].name;
// 修改网站名称
sites[0].name="哈哈";
document.getElementById("name2").innerHTML=sites[0].name;
</script>
</body>
</html>
//运行结果
JavaScript 创建 JSON 对象
第一个网站名称: MrZhong
第一个网站修改后的名称: 哈哈
//代码演示
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>cn.Mr.Neng</title>
</head>
<body>
<p>使用 for-in 来循环对象的属性:</p>
<h1>循环对象的属性</h1>
<h1>循环对象的属性值</h1>
<p id="demo"></p>
<p id="haha"></p>
<script>
var myObj = { "name":"MrZhong", "alexa":10000, "site":null };
for (x in myObj) {
document.getElementById("demo").innerHTML += x + "<br>";
}
for(x in myObj){
document.getElementById("demo").innerHTML +=myObj[x] +"<br>"
}
var hehe={"name":"MrZhong","网址":"cn.Mr.Neng","size":"100M"}
for(a in hehe){
document.getElementById("haha").innerHTML += hehe[a]+"<br>";
}
</script>
</body>
</html>
//运行结果
使用 for-in 来循环对象的属性:
循环对象的属性
循环对象的属性值
name
alexa
site
MrZhong
10000
null
MrZhong
cn.Mr.Neng
100M
有几种后端数据封装成json数据格式
1.List集合转换成json代码
List list = new ArrayList();
list.add( “first” );
list.add( “second” );
JSONArray jsonArray = JSONArray.fromObject( list );
2. Map集合转换成json代码
Map map = new HashMap();
map.put(“name”, “json”);
map.put(“bool”, Boolean.TRUE);
map.put(“int”, new Integer(1));
map.put(“arr”, new String[] { “a”, “b” });
map.put(“func”, “function(i){ return this.arr[i]; }”);
JSONObject json = JSONObject.fromObject(map);
3.Bean转换成json代码
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());
4. 数组转换成json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
5. 一般数据转换成json代码
JSONArray jsonArray =JSONArray.fromObject([‘json’,’is’,’easy’]” );
6.用json put方法
JSONObject json=new JSONObject();
json.put(“name”, “张三”);
json.put(“age”, 18);