写在前面: 今天结束了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互转的内容。
写的不好请见谅!