Gson工具类使用
常用类:JsonArray
JsonElement
JsonObject
JsonParser
TypeToken
在线文档: gson2.2 Api
pom.xml
导入gson包
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
简单使用
package com.commons.test;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import com.tianbao.flights.core.commons.utils.GsonUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Jiangcheng Xiang
*
* Gson使用demo
*/
public class GsonTest {
private static final Logger logger = LoggerFactory.getLogger(GsonTest.class);
public static void main(String[] args) {
// ---------------------解析json
String json = "{\n" +
" \"cid\":\"whitescreen\",\n" +
" \"adultNumber\":1,\n" +
" \"itineraries\":[\n" +
" {\n" +
" \"departureCode\":\"YVR\",\n" +
" \"arrivalCode\":\"LXA\",\n" +
" \"departureDate\":\"20190309\"\n" +
" },\n" +
" {\n" +
" \"departureCode\":\"LXA\",\n" +
" \"arrivalCode\":\"YVR\",\n" +
" \"departureDate\":\"20190313\"\n" +
" }\n" +
" ],\n" +
" \"currency\":\"CNY\",\n" +
" \"status\":0,\n" +
" \"msg\":\"success\"\n" +
"}";
if (StringUtils.hasText(json)) {
JsonParser parser = new JsonParser();
// 转换为json
JsonElement jsonElement = parser.parse(json);
JsonObject jsonObject = jsonElement.getAsJsonObject();
// 解析
String cid = jsonObject.get("cid").getAsString();
int adultNumber = jsonObject.get("adultNumber").getAsInt();
JsonArray itineraries = jsonObject.get("itineraries").getAsJsonArray();
logger.info("cid: [{}], adultNumber: [{}]", cid, adultNumber);
logger.info("cid: [{}], itineraries: [{}], adultNumber: [{}]", cid, itineraries, adultNumber);
}
// ---------------封装一个json字符串
JsonObject jsonStr = new JsonObject();
jsonStr.addProperty("name", "shuaishuai");
jsonStr.addProperty("id", "00001");
logger.info("get json str: [{}]", jsonStr);
// ---------------json字符串转数组 Map
jsonToObject();
}
public static void jsonToObject() {
// list
List<Person> persons = new ArrayList<>();
Person person = new Person();
person.setAge(1);
person.setName("xxx");
persons.add(person);
Person person1 = new Person();
person1.setAge(2);
person1.setName("jjj");
persons.add(person1);
String personJson = GsonUtils.toJson(persons);
List<Person> list = GsonUtils.fromJson(personJson, new TypeToken<ArrayList<Person>>() {
}.getType());
logger.info("result [{}]", list);
// map
Map<String, String> map = new HashMap<>();
map.put("name", "xjc");
map.put("age", "20");
String mapJson = GsonUtils.toJson(map);
Map<String, String> result = GsonUtils.fromJson(mapJson, new TypeToken<Map<String, String>>() {
}.getType());
logger.info("result [{}]", result);
}
}
class Person {
private String name;
private int age;
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;
}
}
Gson工具类
package com.commons.utils;
import com.google.gson.*;
import org.springframework.util.StringUtils;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public abstract class GsonUtils {
private static Gson gson = new Gson();
private static Gson gsonShowNull = new GsonBuilder().serializeNulls().create();
public static <T> T fromJson(String json, Class<T> classOfT) {
return gson.fromJson(json, classOfT);
}
public static <T> T fromJson(String json, Class<T> classOfT, Object adapter) {
if (adapter == null) {
Gson gson = new Gson();
return gson.fromJson(json, classOfT);
}
Gson gson = new GsonBuilder().registerTypeAdapter(classOfT, adapter).create();
return gson.fromJson(json, classOfT);
}
public static <T> T fromJson(String json, Type typeOfT) {
return gson.fromJson(json, typeOfT);
}
public static String toJson(Object object) {
if (object == null) {
return "";
}
return gson.toJson(object);
}
public static String toJsonShowNull(Object object) {
if (object == null) {
return "";
}
return gsonShowNull.toJson(object);
}
public static String prettyJson(String input) {
JsonParser parser = new JsonParser();
JsonObject json = parser.parse(input).getAsJsonObject();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
return gson.toJson(json);
}
public static String jsonArrayAsString(JsonArray jsonArray) {
List<String> strList = new ArrayList<>();
for (JsonElement jsonElement : jsonArray) {
strList.add(jsonElement.getAsString());
}
return StringUtils.collectionToCommaDelimitedString(strList);
}
public static JsonElement toJsonElement(Object object) {
return gson.toJsonTree(object);
}
}