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
、モジュールを登録するなどの他のプロパティを追加することもできます。
Currently, the ObjectMapper
properties are being set inside the function, thus a new naming strategy or a different property for ObjectMapper
can't be used.
Is there a way that every user for JsonUtils
initially sets it's own properties for ObjectMapper
? Or a efficient and generic way to write my Utility class ?