技术交流学习或者有任何问题欢迎加群
编程技术交流群 : 154514123
Java技术交流群 : 6128790
标签:
转载自:JSON技术的调研报告
一、Google的Gson包的使用简单介绍。
Gson类:解析json的最基础的工具类
JsonParser类:解析器来解析JSON到JsonElements的解析树
JsonElement类:一个类代表的JSON元素
JsonObject类:JSON对象类型
JsonArray类:JsonObject数组
TypeToken类:用于创建type,比方泛型List
(1)maven依赖
com.google.code.gson
gson
2.3.1
开源地址 https://github.com/google/gson
(2)基础转换类
public class Book {
private String id;
private String name;
public Book() {
super();
}
public String getId() {
return id;
}
(String id) {
this.id = id;
}
public String getName() {
return name;
}
(String name) {
this.name = name;
}
}
public class Student {
private String name;
private int age;
private String sex;
private String describe;
private Set books;
public Student() {
super();
}
public String getName() {
return name;
}
(String name) {
this.name = name;
}
() {
return age;
}
(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
(String sex) {
this.sex = sex;
}
public Set getBooks() {
return books;
}
(Set books) {
this.books = books;
}
public String getDescribe() {
return describe;
}
(String describe) {
this.describe = describe;
}
}
(3)bean转换json
Gson gson = new Gson();
String json = gson.toJson(obj);
obj是对象
(4)json转换bean
Gson gson = new Gson();
String json = "";
Book book = gson.fromJson(json, Book.class);
(5)json转换复杂的bean,比方List。Set
将json转换成复杂类型的bean,须要使用TypeToken
String json = "idid";
//将json转换成List
List list = gson.fromJson(json,new TypeToken<LIST>() {}.getType());
//将json转换成Set
Set set = gson.fromJson(json,new TypeToken<SET>() {}.getType());
(6)通过json对象直接操作json以及一些json的工具
a)格式化Json
String json = "idid";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(json);
json = gson.toJson(je);
b)推断字符串是否是json,通过捕捉的异常来推断是否是json
String json = "idid";
boolean jsonFlag;
try {
new JsonParser().parse(str).getAsJsonObject();
jsonFlag = true;
} catch (Exception e) {
jsonFlag = false;
}
c)从json串中获取属性
String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
String propertyName = ‘id‘;
String propertyValue = "";
try {
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
propertyValue = jsonObj.get(propertyName).toString();
} catch (Exception e) {
propertyValue = null;
}
d)除去json中的某个属性
String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
String propertyName = ‘id‘;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.remove(propertyName);
json = jsonObj.toString();
e)向json中加入属性
String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
String propertyName = ‘desc‘;
Object propertyValue = "json各种技术的调研";
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
json = jsonObj.toString();
f)改动json中的属性
String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
String propertyName = ‘name‘;
Object propertyValue = "json各种技术的调研";
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.remove(propertyName);
jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
json = jsonObj.toString();
g)推断json中是否有属性
String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
String propertyName = ‘name‘;
boolean isContains = false ;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
isContains = jsonObj.has(propertyName);
h)json中日期格式的处理
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Gson gson = builder.create();
然后使用gson对象进行json的处理,假设出现日期Date类的对象,就会依照设置的格式进行处理
i)json中对于Html的转义