一、什么是JSON?
①JSON指的是JavaScript对象表示法(JavaScript Object Nonation)
②JSON是轻量级的文本数据交换格式
③JSON独立于语言
④JSON具有自我描述性,更易被理解
二、JSON语法(JSON语法是JavaScript对象表示法语法的子集)
1.JSON语法规则
①数据在名称/值对中
②数据由逗号分隔
③{ }花括号保存数据
④[ ]方括号保存数据
2.JSON键/值对
{"name":"value"} 前面是键,后面是值,中间用冒号分隔
3.JSON与JS对象的关系
JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串
4.JSON对象(用花括号表示)
{"name":"value"}
5.JSON数组
{"values":[{"name1":"value1"},{"name2":"value2"}]}
6.JSON的转换
引用和导入架包:
实体类:Person
public class Person {
private int pid;
private String pname;
private String psex;
private int page;
public Person() {
super();
}
public Person(int pid, String pname, String psex, int page) {
super();
this.pid = pid;
this.pname = pname;
this.psex = psex;
this.page = page;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getPsex() {
return psex;
}
public void setPsex(String psex) {
this.psex = psex;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
@Override
public String toString() {
return "Person [page=" + page + ", pid=" + pid + ", pname=" + pname
+ ", psex=" + psex + "]";
}
Java中的转换:
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
import com.zking.entity.Person;
public class TestJson {
/**
* 1.将json转成对象
*/
@Test
public void JsonToObject(){
Person p=new Person(1, "小傻", "男", 10);
JSONObject jsonObject=JSONObject.fromObject(p);
Person p2=(Person)JSONObject.toBean(jsonObject, Person.class);
System.out.println(p2);
}
/**
* 2.将对象转成json
*/
@Test
public void ObjectToJSON(){
Person p=new Person(1, "小傻", "男", 10);
JSONObject jsonObject=JSONObject.fromObject(p);
System.out.println(jsonObject.toString());
}
/**
* 3.将json转成对象集合
*/
@Test
public void JsonToArray(){
List<Person> persons=new ArrayList<Person>();
for (int i = 0; i < 5; i++) {
persons.add(new Person(i, "张"+i, "男", 10));
}
JSONArray jsonArray=JSONArray.fromObject(persons);
System.out.println(jsonArray);
List<Person> persons2=(List<Person>)JSONArray.toCollection(jsonArray,Person.class);
for (Person person : persons2) {
System.out.println(person);
}
}
/**
* 4.将对象集合转成json
*/
@Test
public void ArrayTojson(){
List<Person> persons=new ArrayList<Person>();
for (int i = 0; i < 5; i++) {
persons.add(new Person(i, "张"+i, "男", 10));
}
JSONArray jsonArray=JSONArray.fromObject(persons);
System.out.println(jsonArray);
}
JSP中的转换
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%-- 引用JSON--%>
<script type="text/javascript" src="jquery/jquery-3.1.1.min.js">
</script>
<script type="text/javascript">
$(function(){
function Person(pid,pname,psex,page){
this.pid=pid;
this.pname=pname;
this.psex=psex;
this.page=page;
}
$("#a").click(function(){
var person=new Person(1,"落魄灰","人妖",17);
//将对象转成json(不常用)
var str=JSON.stringify(person);
//将json转成对象
var personVar=JSON.parse(str);
alert(personVar.pname+"是"+personVar.psex);
});
$("#b").click(function(){
var person=new Person(1,"落魄灰","人妖",17);
//将对象转成json(不常用)
var str=JSON.stringify(person);
alert(str);
});
});
</script>
</head>
<body>
<input type="button" value="json转对象" id="a"/>
<input type="button" value="json转集合" id="b"/>
</body>
</html>
7.JSON与XML比较
类似:
1.JSON是纯文本
2.JSON 具有“自我描述性”(人类可读)
3.JSON 具有层级结构(值中存在值)
4.JSON 可通过 JavaScript 进行解析
5.JSON 数据可使用 AJAX 进行传输
不同:
1.没有结束标签
2.更短
3.读写的速度更快
4.能够使用内建的 JavaScript eval() 方法进行解析
5.使用数组
6.不使用保留字