1:GsonUtils工具类
/**
* google json utils
* **/
public class GsonUtils {
public static final String DATE_FORMAT="yyyy-MM-dd HH:mm:ss";
/**
* get google json
* @see Gson
* **/
public static Gson getGson() {
return (new GsonBuilder()).serializeNulls().setDateFormat(GsonUtils.DATE_FORMAT).create();
}
/**
* object to json
* **/
public static String toJson(Object obj) {
return getGson().toJson(obj);
}
/**
* json to type
* @see Gson#toJson(Object, Type)
* **/
public static String toJson(Object obj, Type type) {
return getGson().toJson(obj, type);
}
/**
* generic t to json
* **/
public static <T> String t2Json(T t) {
return getGson().toJson(t);
}
/**
* json to generic t
* **/
public static <T> T json2T(String jsonString, Class<T> clazz) {
return getGson().fromJson(jsonString, clazz);
}
/**
* json to collection
* **/
public static <T> List<T> json2Collection(String jsonStr, Type type) {
return (List<T>) getGson().fromJson(jsonStr, type);
}
/**
* json to type
* @see Gson#fromJson(String, Type)
* **/
public static <T> T fromJson(String jsonStr, Type type) {
return getGson().fromJson(jsonStr, type);
}
/**
* json to class type
* **/
public static <T> T fromJson(String jsonStr, Class<T> clazz) {
return getGson().fromJson(jsonStr, clazz);
}
}
1:java bean对象转换成json
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
}
@Test
public void testBean2Json() {
System.out.println(GsonUtils.toJson(new User(1, "王旭", 22)));
}
2:List对象转换成json
@Test
public void testBeanList2Json() {
System.out.println(GsonUtils.toJson(Arrays.asList(
new User(1, "王旭", 22),
new User(2, "王旭1", 23),
new User(3, "王旭2", 24)
)
));
}
@Test
public void testBeanList2Json2() {
System.out.println(GsonUtils.toJson(Arrays.asList(
new User(1, "王旭", 22),
new User(2, "王旭1", 23),
new User(3, "王旭2", 24)
), new TypeToken<List<User>>() {
}.getType()));
}
3:Map对象转换成json
private static Map<String, User> userMap = new HashMap<>();
static {
userMap.put("1", new User(1, "王旭", 22));
userMap.put("2", new User(2, "王旭", 23));
}
@Test
public void testMap2Json() {
System.out.println(GsonUtils.toJson(userMap));
}
4:Json转成java bean对象
@Test
public void testJson2Bean() {
User user = GsonUtils.fromJson("{\"id\":1,\"name\":\"王旭\",\"age\":22}", User.class);
System.out.println(user);
}
5:Json转成List对象
//TypeToken用来获取转换出来的泛型类型,如果转换成泛型请使用该类
@Test
public void testJson2List() {
String jsonList = "[{\"id\":1,\"name\":\"王旭\",\"age\":22},{\"id\":2,\"name\":\"王旭1\",\"age\":23},{\"id\":3,\"name\":\"王旭2\",\"age\":24}]";
List<User> userList = GsonUtils.fromJson(jsonList, new TypeToken<List<User>>() {
}.getType());
System.out.println(userList);
}
6:Json转成map对象
//其中,使用TypeToken可以将json转换成对应的Java类型
@Test
public void testJson2Map() {
TypeToken<Map<String, User>> typeToken = new TypeToken<Map<String, User>>() {
};
Map<String, User> map = GsonUtils.fromJson("{\"1\":{\"id\":1,\"name\":\"王旭\",\"age\":22},\"2\":{\"id\":2,\"name\":\"王旭\",\"age\":23}}",
typeToken.getType());
System.out.println(map);
}
//在转换json的时候
//第一步:知道json是什么构造的
//第二步:转换出相应的Java类型
@Test
public void testJson2Map() {
TypeToken<TreeMap<String, User>> typeToken = new TypeToken<TreeMap<String, User>>() {
};
TreeMap<String, User> map = GsonUtils.fromJson("{\"1\":{\"id\":1,\"name\":\"王旭\",\"age\":22},\"2\":{\"id\":2,\"name\":\"王旭\",\"age\":23}}",
typeToken.getType());
for (Map.Entry<String, User> entry : map.entrySet()) {
System.out.println(entry.getKey()+":"+entry.getValue());
}
}