寫在前面: 今天結束了JavaWeb階段,收穫了很多知識,接下來還需要繼續努力,開始學習更多的框架與提升知識。
若覺得文章對你有幫助可以個點贊支持 ^ _ ^
如果你喜歡Java可以相互學習~
作者公衆號:小白編碼
什麼是Json?
JSON (JavaScript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。JSON採用完全獨立於語言的文本格式,而且很多語言都提供了對json 的支持(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這樣就使得JSON 成爲理想的數據交換格式。
- json 是一種輕量級的數據交換格式。
- 輕量級指的是跟xml 做比較。
- 數據交換指的是客戶端和服務器之間業務數據的傳遞格式。
Json格式如何定義:(在JS中)
json 是由鍵值對組成,並且由花括號(大括號)包圍。每個鍵由引號引起來,鍵和值之間使用冒號進行分隔,多組鍵值對之間進行逗號進行分隔。
Json格式:
var jsonObj = {
"key1":123,
"key2":"abc",
"key3":true,
"key4":[12,"abcd",false],
"key5":{
"key5_1":"JSON對象形式",
"key5_2":123
},
"key6":[{
"key6_1_1":"Json對象數組",
"key6_1_2":121
},{
"key6_2_1":"arr_1",
"key6_2_2":true
}]
};
Json在Js中使用:
- Json一般由Json對象形式存在或者Json字符串形式存在
- 兩個常用的方法:
- JSON.stringify() 把json對象轉化成json字符串
- JSON.parse() 把json字符串轉化成json對象
//把json對象轉化成json字符串
var jsonObjStr = JSON.stringify(jsonObj);
console.log(jsonObjStr);//控制檯輸出
控制檯結果:{"key1":123,"key2":"abc","key3":true,"key4":[12,"abcd",false],"key5":{"key5_1":"JSON對象形式","key5_2":123},"key6":[{"key6_1_1":"Json對象數組","key6_1_2":121},{"key6_2_1":"arr_1","key6_2_2":true}]}
//把json字符串轉化成json對象
var jsonStrParse = JSON.parse(jsonObjStr);
console.log(jsonStrParse);
控制檯結果:
Object
key1: 123
key2: "abc"
key3: true
key4: Array(3)
0: 12
1: "abcd"
2: false
length: 3
__proto__: Array(0)
key5:
key5_1: "JSON對象形式"
key5_2: 123
__proto__: Object
key6: Array(2)
0:
key6_1_1: "Json對象數組"
key6_1_2: 121
__proto__: Object
1: {key6_2_1: "arr_1", key6_2_2: true}
length: 2
__proto__: Array(0)
__proto__: Object
Json在Java中使用:(javaBean與json互轉)
這裏json與java互轉使用了(Gson的jar包)三種轉化:
- 先導入Gson的jar包gson-2.2.4.jar(add Libraries)添加依賴
- 普通的互轉
- List與json的互轉
- Map與json的互轉
首先創建JavaBean:(get,set,構造器,tostring自行添加)
public class Student {
private Integer id;
private String name;
}
普通的互轉:
@Test
public void test1(){
//這裏new一個Student
Student student = new Student(1,"小白");
//創建Gson實例
Gson gson = new Gson();
//toJson()可以把java對象轉化成Json字符串
String stuJsonStr = gson.toJson(student);
System.out.println(stuJsonStr);
// fromJson 把json 字符串轉換回Java 對象
// 第一個參數是json 字符串
// 第二個參數是轉換回去的Java 對象類型
Student stuObj = gson.fromJson(stuJsonStr, Student.class);
System.out.println(stuObj);
}
控制檯輸出結果:
{"id":1,"name":"小白"}//Json字符串
Student{id=1, name='小白'}//Student對象
List與json的互轉:
@Test
public void test2(){
//創建一個StudentList
List<Student> studentList = new ArrayList<>();
//向list中添加兩名學生
studentList.add(new Student(1,"小白"));
studentList.add(new Student(2,"小黑"));
//實例化Gson對象
Gson gson = new Gson();
//將List轉化成Json字符串
String stuListJsonStr = gson.toJson(studentList);
System.out.println(stuListJsonStr);
//將Json字符串轉化成List對象
//第二個參數需要傳入一個Type類型的形參,需要一個類集成Gson中的TypeToken
//這裏第二個參數我使用(匿名內部類演示)節省空間
List<Student> list = gson.fromJson(stuListJsonStr,new TypeToken<List<Student>>(){}.getType());
System.out.println(list);
//這裏過去list中第一個對象
Student student = list.get(0);
System.out.println(student);
}
控制檯結果:
[{"id":1,"name":"小白"},{"id":2,"name":"小黑"}] //這個是Json字符串打印
[Student{id=1, name='小白'}, Student{id=2, name='小黑'}] //這個是list集合打印
Student{id=1, name='小白'} //這個是打印list集合中第一個stu對象
Map與Json互轉:
@Test
public void test3() {
//實例化一個Map
Map<Integer, Student> stuMap = new HashMap<>();
//向map中存放兩名Student
stuMap.put(1, new Student(1, "小白"));
stuMap.put(2, new Student(2, "小黑"));
//實例化Gson
Gson gson = new Gson();
//將map對象轉化成json字符串格式
String stuMapJsonStr = gson.toJson(stuMap);
System.out.println(stuMapJsonStr);
//將json字符串轉回Map對象
//原理同上List
Map<Integer, Student> josnToStuMap = gson.fromJson(stuMapJsonStr, new TypeToken<Map<Integer, Student>>(){}.getType());
System.out.println(josnToStuMap);
//獲得map中第一個對象
Student student = josnToStuMap.get(1);
System.out.println(student);
}
控制檯結果:
[{"id":1,"name":"小白"},{"id":2,"name":"小黑"}] //json字符串
[Student{id=1, name='小白'}, Student{id=2, name='小黑'}] //map對象
Student{id=1, name='小白'} //map中第一個對象
最後:
以上內容就是簡單的json的介紹和java與js將json互轉的內容。
寫的不好請見諒!