在我们的额日常开发中,一般会遇到四种格式的Json,如何对他们进行解析,以及每种格式分别解析成什么样的格式,我这里简单做了一个总结,封装了一个Json解析的工具类,希望在以后的项目中直接拿来用。
3种格式的json分别如下
1、基本类型
{
"age": 18,
"name": "张三",
"sex": true
}
2、数组类型
[
{
"name": "张三",
"age": 18,
"sex": true
},
{
"name": "李四",
"age": 19,
"sex": false
}
]
3、对象嵌套
{
"name": "teacher",
"computer": {
"CPU": "intel7",
"disk": "512G"
},
"students": [
{
"name": "张三",
"age": 18,
"sex": true
},
{
"name": "李四",
"age": 19,
"sex": false
}
]
}
针对这几种格式的Json,我封装了如下方法,分别将不同格式的Json解析成普通对象、List、Map、以及Json的节点解析,主要代码如下:
public class ParserDemo {
public static void main(String[] args) {
/**
* json转成普通对象
*/
parser2Object();
/**
* json转成List集合
*/
parser2List();
/**
* json转成Map
*/
parser2Map();
/**
* json节点解析
*/
parserElement();
}
/**
* json转换 为简单对象
*/
private static void parser2Object() {
String json = "{'name':'张三','age':18,'sex':true}";
Gson gson = new Gson();
Student student = gson.fromJson(json, Student.class);
System.out.println(student);
}
/**
* json转成集合
*/
private static void parser2List() {
String json = "[{'name':'小1','age':18,'sex':true},{'name':'小2','age':19,'sex':false},{'name':'小3','age':20,'sex':true},{'name':'小4','age':21,'sex':false},{'name':'小5','age':22,'sex':true}]";
Gson gson = new Gson();
TypeToken> token = new com.google.gson.reflect.TypeToken>() {
};
List list = gson.fromJson(json, token.getType());
System.out.println(list);
}
/**
* json转成Map
*/
private static void parser2Map() {
String json = "{'小3':{'name':'小3','age':20,'sex':true},'小4':{'name':'小4','age':21,'sex':false},'小5':{'name':'小5','age':22,'sex':true},'小1':{'name':'小1','age':18,'sex':true},'小2':{'name':'小2','age':19,'sex':false}}";
Gson gson = new Gson();
TypeToken
我的Student实体类如下:
public class Student {
private String name;
private int age;
private boolean sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean gender) {
this.sex = gender;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
好了,这四种解析方式应付日常开发应该是够了。