我正在编写一个JsonUtils
包含不同函数来序列化和反序列化数据的类。
public class JsonUtils {
private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
public static String toJsonString(Object obj) {
String json = null;
JSON_MAPPER.setPropertyNamingStrategy(new CustomNamingStrategy());
JSON_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
try {
System.out.print("OBJECT MAPPER:---> JSON STRING:\n" + JSON_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(obj));
json = JSON_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return json;
}
public static <T> T toPOJO(String json, Class<T> type){
JSON_MAPPER.setPropertyNamingStrategy(new CustomNameNamingStrategy());
System.out.println("TO POJO: Json string " + json);
try {
return JSON_MAPPER.readValue(json, type);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
现在,我希望这些功能可以通用。例如:有人想调用toJsonString
方法但想使用不同的命名策略来转换为 json。或者可能想要添加一些其他属性来ObjectMapper
注册一个模块。
目前,ObjectMapper
属性是在函数内部设置的,因此ObjectMapper
不能使用新的命名策略或不同的属性。
有没有一种方法可以让每个用户JsonUtils
最初都为其设置自己的属性ObjectMapper
?还是一种高效且通用的方式来编写我的 Utility 类?