import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import com.google.gson.stream.JsonReader;
public class JsonUtils {
private static Gson gson = new GsonBuilder().serializeNulls().create();
private static final Logger logger = LoggerFactory.getLogger(JsonUtils.class);
private static MflexConfigBean mflexConfigBean;
private JsonUtils() {
}
/**
* 将对象转换为Json字符串
*
* @param <T>
* 转换对象的类
* @param 要转换的对象
* @return 转换后的字符串
*/
public static <T> String toJsonString(T json) {
return gson.toJson(json);
}
/**
* 将对象转换为Json字符串数组
*
* @param <T>
* 转换对象的类
* @param 要转换的对象
* @return 转换后的字符串
*/
public static <T> String toJsonArray(T json) {
return gson.toJsonTree(json).getAsJsonArray().toString();
}
public static <T> T fromJson(String jsonString, Class<T> classOfT) {
return gson.fromJson(jsonString, classOfT);
}
public static <T> List<T> listFromJson(String jsonString, Class<T> classOfT) {
List<T> list = new LinkedList<>();
JsonArray jsonArray = parseString(jsonString).getAsJsonArray();
for (JsonElement jsonElement : jsonArray) {
list.add(gson.fromJson(jsonElement, classOfT));
}
return list;
}
private static JsonElement parseString(String jsonString) {
JsonParser parser = new JsonParser();
JsonReader reader = new JsonReader(new StringReader(jsonString));
reader.setLenient(true);
return parser.parse(reader);
}
public static MflexConfigBean getConfigBean() throws IOException {
if (mflexConfigBean == null ) {
String root = System.getProperty("user.dir");
String readFileToString = FileUtils.readFileToString(new File(root, "application-mflex.json"), StandardCharsets.UTF_8);
try {
mflexConfigBean = gson.fromJson(readFileToString, MflexConfigBean.class);
} catch (JsonSyntaxException e) {
logger.error("json字符串转对象失败,被转换的json字符串为:{}, 失败信息:", readFileToString, e);
}
}
return mflexConfigBean;
}
public static void main(String[] args) throws IOException {
// System.out.println(getConfigBean().toString());
}
}
com.google.gson.Gson的基本json代码工具类
最新推荐文章于 2024-04-02 17:07:30 发布