什么是Json
JSON: JavaScript Object Notation(JavaScript 对象表示法),是存储和交换文本信息的语法。
主要用于服务器和Web应用程序之间的数据传输。JSON文件扩展名是 .json
举个栗子:
{
"AA":[{"aa":"11","bb":22},{"cc":"33"}],
"BB":[{"bb":"11"}],
"CC":[{"cc":"11","c":"22"},{"cc":"11"},{"cc":"11"}]
}
{
"books": [
{
"id": "0001",
"language": "Java",
"books": [
"Head First Java",
"Java 核心技术",
"Thinking In Java"
]
},
{
"id": "0002",
"language": "Android",
"books": [
"Android从入门到精通",
"第一行代码"
]
}
],
"movies": [
{
"id": "11111",
"type": "love",
"movies": [
"泰坦尼克号"
],
"date": "2019-6-26"
}
]
}
{
"name":"Jack Ma",
"age":25.5,
"dirthday":"1990-01-01",
"school":"北京大学",
"major":["Java","Android","IOS"],
"is_VIP":true,
"car":{
"color":"red",
"brand":"BMW"
},
"house":null
}
Json基本用法
名称/值对
花括号里面放对象,方括号里放数组 {"名称":["键1":"值1", "键2":"值2"]}
对象可以包含多个 key/value(键/值)对。 key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
Json和Xml的比较
xml比json更详细,但是Json更易解析
xml是结构化数据,不包括数组,json包括数组
对比:
Json:
{
"name": "Jake Ma",
"age": "18",
"company": "alibaba",
"salary": 9
}
Xml:
<dalao>
<name>Jake Ma</name>
<age>18</age>
<company>alibaba</company>
<salary>9</salary>
</dalao>
Json 4 Java
Java中如何使用Json?
第一步:引用
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
第二步:使用(这里我使用的是Fastjson)
import com.alibaba.fastjson.JSONObject;
public class JsonObjectTest {
public static void main(String[] args){
jsonObject();
}
private static void jsonObject() {
JSONObject people = new JSONObject();
people.put("name","Jack Ma");
people.put("age", 25.5);
people.put("birthday","1990-01-01");
people.put("school","北京大学");
people.put("major", new String[]{"Java","Android","IOS"});
people.put("is_VIP", true);
people.put("house", null);
people.put("comment", "这里最后一行放注释");
System.out.println(people.toString());
}
}
import com.alibaba.fastjson.JSONObject;
import java.io.StringWriter;
public class Json4Java {
public static void main(String[] args){
JSONObject object = new JSONObject();
object.put("name", "JackMa");
object.put("salary", new Integer(9));
object.put("is_VIP", new Boolean(true));
System.out.println(object);
StringWriter out = new StringWriter();
object.writeJSONString(out);
String jsonText = out.toString();
System.out.println(jsonText);
}
}
JSONObject还支持其他方式构建Json的数据:
通过HashMap构建JSON
private static void createJsonByMap(){
Map<String, Object> people = new HashMap<>();
people.put("name","Jack Ma");
people.put("age", 25.5);
people.put("birthday","1990-01-01");
people.put("school","北京大学");
people.put("major", new String[]{"Java","Android","IOS"});
people.put("is_VIP", true);
people.put("house", null);
people.put("comment", "这里最后一行放注释");
System.out.println(new JSONObject(people));
}
通过JavaBean构建JSON
private static void createJsonByJavaBean(){
PeopleBean people = new PeopleBean();
people.setName("Jack Ma");
people.setAge(25.5);
people.setBirthday("1990-01-01");
people.setSchool("北京大学");
people.setMajor(new String[]{"Java","Android","IOS"});
people.setIs_VIP(true);
people.setHouse(null);
people.setComment("这里最后一行放注释");
System.out.println(new JSONObject(people));
}
从文件读取JSON
Json & JavaScript
JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。
Json-->JavaScript Object
JSON.parse() 方法将数据转换为 JavaScript 对象
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:
var obj = eval ("(" + txt + ")");
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Json Demo</title>
</head>
<body>
<h3>通过 JSON 字符串来创建对象</h3>
<p>
First Name: <span id="fname"></span><br />
Last Name: <span id="lname"></span><br />
</p>
<script type="text/javascript">
// 创建包含 JSON 语法的 JavaScript 字符串
var txt = '{"employees":[' +
'{"firstName":"Bill","lastName":"Gates" },' +
'{"firstName":"George","lastName":"Bush" },' +
'{"firstName":"Thomas","lastName":"Carter" }]}';
// JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
// eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。
var obj = eval ("(" + txt + ")");
document.getElementById("fname").innerHTML=obj.employees[1].firstName;
document.getElementById("lname").innerHTML=obj.employees[1].lastName;
</script>
<h3>通过 JSON 字符串来创建对象</h3>
<p>
<span id="demo"></span><br />
</p>
<script type="text/javascript">
var txt = '{"name":"Bill", "age":26, "city":"HZ"}';
var JSONObj = JSON.parse(txt);
document.getElementById("demo").innerHTML = JSONObj.name + "," + JSONObj.age + "," + JSONObj.city;
</script>
</body>
</html>
输出:
通过 JSON 字符串来创建对象
First Name: George
Last Name: Bush通过 JSON 字符串来创建对象
Bill,26,HZ
访问对象:
可以使用.或者[]来访问对象的值
var myObj = { "name":"runoob", "alexa":10000, "site":null };
for (x in myObj) {
document.getElementById("demo").innerHTML += x + "<br>";
}
删除对象属性:
delete myObj.sites.site1;
我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串:
var obj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
【教程】
视频教程 --- https://www.imooc.com/learn/523
【工具】
【文档】
官方文档 --- http://www.json.org/