目录
什么是json有什么用
json是javascript的对象标签,简称json
作用:一种标准的数据交换按格式
2.JSON是一种标准的轻量级数据交换格式。特点是:
体积小,易解析
3.在实际开发中由两种数据交换格式JSON和xml(回答面试官二者区别)
xml体积大,解析麻烦,但是有其优点,语法严谨
JSON就是一种标准的轻量级的数据交换格式,两个系统之间要想交换数据就用JSON或
xml xml体积大不好解析但严禁
Java与JSON做什么
将Java中的对象 快速的转换为 JSON格式的字符串。将JSON格式的字符串, 转换为Java的对象.
Java与JSON转换
主要使用Gson和FastJson。FastJson是阿里的,Gson是谷歌的
JSON在java中的对象格式
格式
{“键”:值,“键”:值}
一个对象, 由一个大括号表示。括号中 通过键值对来描述对象的属性
要求
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解 析.)
键值对的值, 可以是JS中的任意类型的数据
例如:
JSON: { "name":"金苹果", "info":"种苹果" }
java中JSON数组格式
在JSON格式中可以与对象互相嵌套 [元素1,元素2...]
案例
{
"name":"伟杰老师", "
age":18,
"pengyou":["张三","李四","王二","麻子",{
"name":"野马老师",
"info":"像匹野马一样狂奔在技术钻研的道路上" }],
"heihei":{
"name":"大长刀",
"length":"40m"
}
}
Gson将java转换JSON字符串的步骤:
1. 引入JAR包(可在Gitee上下载gson.-2.8.6.jar)
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
public class Demo_1 {
public static void main(String[] args) {
// 创建Gson对象
Gson g = new Gson();
// 转换:toJson(对象)
Book b = new Book("100","橘子不是唯一的水果","爱和死一样强大");
String s =g.toJson(b);
System.out.println(s);
}
}
public class Book {
private String id;
private String name;
private String info;
public Book(String id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
Gson 将JSON字符串转换为java对象
1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码: 对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例 一:转换成对象和集合
public class Demo_2 {
public static void main(String[] args) {
// 1.创建Gson对象
Gson g = new Gson();
// 2.转换成对象{"id":"100","name":"橘子不是唯一的水果","info":"爱和死一样强大"}
Book b = g.fromJson("{\"id\":\"100\",\"name\":\"橘子不是唯一的水果\",\"info\":\"爱和死一样强大\"}\n",Book.class);
System.out.println(b.getId());
// 3.转换成集合
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"橘子不是唯一的水果\",\"info\":\"爱和死一样强大\"}\n", HashMap.class);
System.out.println(data.get("name"));
}
}
案例 二:Json数组转换对象
public class Demo_3 {
public static void main(String[] args) {
// 1.创建Gson对象
Gson g = new Gson();
// 2.{"id":"100","name":"橘子不是唯一的水果","info":"爱和死一样强大","page":["嘿嘿嘿嘿","hhhhhh","啊啊啊啊"]}page是数组
// 3.转换成集合
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"橘子不是唯一的水果\",\"info\":\"爱和死一样强大\",\"page\":[\"嘿嘿嘿嘿\",\"hhhhhh\",\"啊啊啊啊\"]}\n", HashMap.class);
System.out.println(data.get("page"));
System.out.println(data.get("page").getClass());
List page = (List) data.get("page");
System.out.println(page.get(1));
}
}
注意:
第一行:打印出来的结果看起来是数组
第二行:获得getclass后,可以通过list集合获得。所以该类型类型属于集合(对象包含数组部分经JSON转换后变成ArraList集合)
FastJson将java对象转换为JSON字符串步骤
1. 引入JAR包(可在Gitee上下载fastgson.-1.2.70.jar)
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象)
public class Demo1 {
public static void main(String[] args) {
// 1.创建一本图书
Book book = new Book("1002","唐诗","床前明月光");
// 2.转换
String s = JSON.toJSONString(book);
System.out.println(s);
}
}
FastJson将JSON字符串转换为java对象步骤
1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码: 类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或 List list=JSON.parseArray(JSON字符串,类型.class);
案例 一:转换成对象
public class Demo2 {
public static void main(String[] args) {
// 1.转换 {"id":"1002","info":"床前明月光","name":"唐诗"}
Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"床前明月光\",\"name\":\"唐诗\"}", Book.class);
System.out.println(book.getId());
}
}
案例 二:数组转换成集合对象
public class Demo3 {
public static void main(String[] args) {
// 1.转换json数组["一二三","二三四","三四五"]
List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
System.out.println(strings.get(1));
}
}
JSON在js用法
创建JSON对象
var studentObj = {
"son":"110",
"sname":"张三",
"sex":"男"
};
alert(studentObj.son+","+studentObj.sname+","+studentObj.sex)//110,张三,男
创建JSON数组
var students =[
{"sno":"110","sname":"zhang","sex":"男"},
{"sno":"120","sname":"zang","sex":"男"},
{"sno":"130","sname":"zh","sex":"男"}
]
for(var i=0;i<students.length;i++){
var stuObj = students[i];
alert(stuObj.sno+","+stuObj.sname+","+stuObj.sex)
}
在JSON对象里创建数组
var student1={
"count":"3",
"student" :[
{"name":"q","sno":"21"},
{"name":"q","sno":"21"}
]
}
eval():将字符串当做一段就是代码解析并执行
var fromjava = "{\"name\":\"zhangsan\",\"password\":\"123\"}";//java发过来的代码
window.eval("var jsonObj ="+fromjava)
alert(jsonObj.name+","+jsonObj.password);//zhangsan,123
JSON在js运用案例:
希望点击显示员工信息列表按钮下边表格会出来具体值
期望效果
<body>
<script>
//列出数据
var data = {
"emps":[
{"empno":7369,"ename":"SMITH","sal":800.0},
{"empno":7369,"ename":"SMITH","sal":800.0},
{"empno":7369,"ename":"SMITH","sal":800.0}
]
};
//希望把数据展示到table当中
window.onload = function(){
var displayBtnElt = document.getElementById("displayBtn")
displayBtnElt.onclick = function(){
var emps = data.emps;
var html = '';
for(var i = 0;i<emps.length;i++){
var emp = emps[i];
//拼串
html +="<tr>";
html +="<td>"+emp.empno+"</td>";
html +="<td>"+emp.ename+"</td>";
html +="<td>"+emp.sal+"</td>";
html +="</tr>";
}
document.getElementById("emptbody").innerHTML=html
}
</script>
<input type="button" value="显示员工信息列表" id="displayBtn">
<h2>员工信息列表</h2>
<hr>
<table border="1px" width="50%">
<tr>
<th>员工编号</th>
<th>员工名字</th>
<th>员工薪资</th>
</tr>
<tbody id="emptbody">
</tbody>
</body>