java用GSON写一个通用的json解析代码
时间: 2023-11-28 22:48:45 浏览: 93
以下是使用GSON解析JSON的通用代码示例:
```java
import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class JsonUtils {
private static Gson gson = new Gson();
/**
* 将JSON字符串转换为对象
* @param json JSON字符串
* @param clazz 对象类型
* @return 对象
*/
public static <T> T fromJson(String json, Class<T> clazz) {
return gson.fromJson(json, clazz);
}
/**
* 将JSON字符串转换为对象列表
* @param json JSON字符串
* @param type 对象类型
* @return 对象列表
*/
public static <T> List<T> fromJsonList(String json, Type type) {
return gson.fromJson(json, type);
}
/**
* 将对象转换为JSON字符串
* @param object 对象
* @return JSON字符串
*/
public static String toJson(Object object) {
return gson.toJson(object);
}
/**
* 将对象列表转换为JSON字符串
* @param list 对象列表
* @return JSON字符串
*/
public static String toJson(List<?> list) {
return gson.toJson(list);
}
/**
* 将对象转换为JSON字符串,并指定排除字段
* @param object 对象
* @param excludeFields 排除字段
* @return JSON字符串
*/
public static String toJsonExcludeFields(Object object, String... excludeFields) {
Gson gson = new GsonBuilder().setExclusionStrategies(new ExcludeFieldsStrategy(excludeFields)).create();
return gson.toJson(object);
}
/**
* 将对象列表转换为JSON字符串,并指定排除字段
* @param list 对象列表
* @param excludeFields 排除字段
* @return JSON字符串
*/
public static String toJsonExcludeFields(List<?> list, String... excludeFields) {
Gson gson = new GsonBuilder().setExclusionStrategies(new ExcludeFieldsStrategy(excludeFields)).create();
return gson.toJson(list);
}
/**
* 排除字段策略
*/
private static class ExcludeFieldsStrategy implements ExclusionStrategy {
private String[] excludeFields;
public ExcludeFieldsStrategy(String... excludeFields) {
this.excludeFields = excludeFields;
}
@Override
public boolean shouldSkipField(FieldAttributes f) {
for (String excludeField : excludeFields) {
if (f.getName().equals(excludeField)) {
return true;
}
}
return false;
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
}
}
```
使用示例:
```java
// JSON字符串
String json = "{\"name\":\"张三\",\"age\":18}";
// 将JSON字符串转换为对象
Person person = JsonUtils.fromJson(json, Person.class);
System.out.println(person.getName() + "," + person.getAge());
// 对象列表的JSON字符串
String jsonList = "[{\"name\":\"张三\",\"age\":18},{\"name\":\"李四\",\"age\":20}]";
// 将JSON字符串转换为对象列表
Type type = new TypeToken<List<Person>>() {}.getType();
List<Person> personList = JsonUtils.fromJsonList(jsonList, type);
for (Person p : personList) {
System.out.println(p.getName() + "," + p.getAge());
}
// 将对象转换为JSON字符串
Person person = new Person("张三", 18);
String json = JsonUtils.toJson(person);
System.out.println(json);
// 将对象列表转换为JSON字符串
List<Person> personList = Arrays.asList(new Person("张三", 18), new Person("李四", 20));
String jsonList = JsonUtils.toJson(personList);
System.out.println(jsonList);
// 将对象转换为JSON字符串,并指定排除字段
Person person = new Person("张三", 18);
String json = JsonUtils.toJsonExcludeFields(person, "name");
System.out.println(json);
// 将对象列表转换为JSON字符串,并指定排除字段
List<Person> personList = Arrays.asList(new Person("张三", 18), new Person("李四", 20));
String jsonList = JsonUtils.toJsonExcludeFields(personList, "name");
System.out.println(jsonList);
```
阅读全文