JSON文件学习笔记
文章目录
json文件特性
json是一种轻量级的数据交换格式,相比较于xml文件,json文件具有占用空间更小,传输更快的优势。
一、json对象格式
一个对象由一个大括号表示,
括号中通过一个个键值对来描述对象的属性(可以理解为大括号中包含的一个个键值对)
格式:
键与值之间使用冒号连接,多个键值队之间用逗号分隔,
键值对的键应该用引号引用(通常java解析时,键不使用引号会报错,但是js能够正常解析)
键值对的值可以是js中任意类型的数据(也可以是数组)。
实例:
{
“name”:“aaa”,
“info”:“bbb”,
“pengyou”:[“ccc”,“ddd”,{
“name”:“zhangsan”,
“age”:“23”
}],
“hh”:{
“info”:“ddd”,
“length”:“12m”
}
}
二、json的解析
1.jar包的下载以及导入
由于JDK没有自带的jar解析工具,因此为了能够解析json文件,我们需要手动导入Gson和Fastjson的jar包。
首先前往github下载jar包
下载地址:
Gson:
https://github.com/google/gson.
Fastjson:
https://github.com/alibaba/fastjson
.
然后在idea的项目目录下创建lib文件夹,将刚才下载的文件加入其中:
选择File-Project Structure
在Libraries中添加jar包,点击ok导入成功。
2.谷歌的Gson使用使用方法
首先创建book类
public class Book {
int id;
String name;
String info;
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getInfo() {
return info;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
将类转化为json
需要调用Gson类的toJson方法:
public static void main(String[] args) {
Gson g = new Gson();
String json = g.toJson(new Book(10,"Jack","good man"));
System.out.println(json);
}
输出:
将json转化为类
Gson g = new Gson();
Book b1 = g.fromJson("{\"id\":10,\"name\":\"Jack\",\"info\":\"good man\"}",Book.class);
System.out.println(b1);
输出结果:
将json转化为集合
这里对该json文件进行转化:
代码如下:
Gson g = new Gson();
HashMap data = g.fromJson("{\n" +
" \"name\":\"aaa\",\n" +
" \"info\":\"bbb\",\n" +
" \"pengyou\":[\"ccc\",\"ddd\",{\n" +
" \"name\":\"zhangsan\",\n" +
" \"age\":\"23\"\n" +
" }],\n" +
" \"hh\":{\n" +
" \"info\":\"ddd\",\n" +
" \"length\":\"12m\"\n" +
" }\n" +
"}",HashMap.class);
//然后对其中的内容进行遍历
for ( Object s: data.keySet()) {
System.out.println(data.get(s));
}
输出结果:
3.阿里的Fastjson使用方法
将类转化为json
使用静态方法toJSONString
String json = JSON.toJSONString(new Book(10, "Jack", "good man"));
System.out.println(json);
输出结果:
将json转化为类
使用静态方法parseObject
代码如下:
Book b = JSON.parseObject("{\"id\":10,\"info\":\"good man\",\"name\":\"Jack\"}",Book.class);
System.out.println(b);
输出如下:
将json转化为集合
使用静态方法parseObject,配合TypeReference使用。
HashMap data = JSON.parseObject("{\n" +
" \"name\":\"aaa\",\n" +
" \"info\":\"bbb\",\n" +
" \"pengyou\":[\"ccc\",\"ddd\",{\n" +
" \"name\":\"zhangsan\",\n" +
" \"age\":\"23\"\n" +
" }],\n" +
" \"hh\":{\n" +
" \"info\":\"ddd\",\n" +
" \"length\":\"12m\"\n" +
" }\n" +
"}",new TypeReference<HashMap<String, String>>() {
});
for ( Object s: data.keySet()) {
System.out.println(data.get(s));
}
输出结果:
4.java中json文件的读取和保存
在上面我们对json字符串进行了解析,然后将其转化为了自定义的类或者是集合,那么对于从外界得到的json文件我们应该怎么去读取,对于生成的json字符串我们应该怎么去写出?
。。。等待更新
总结
json文件在java的开发中使用频率很高,在开发时需要给别人回复json文件或者读取别人的json文件,因此要重点掌握json的使用。