我希望我的toString方法以json格式返回对象,并使用单引号,我不想手动管理toString方法,有没有自动管理的方法?目的是,如果我添加了一个新变量,我不想重做我的toString方法。类我的类{ int myVariable;
@Overide public string toString() { return "'MyClass':{'myVariable'" +myVariable+"':}" } }
j1dl9f461#
你可以使用像Jackson或Gson这样的图书馆,示例:与Jackson:
@Override public String toString() { try { return new ObjectMapper().writeValueAsString(this); } catch (JsonProcessingException e) { e.printStackTrace(); return null; } }
与Gson:
@Override public String toString() { return new Gson().toJson(this); }
输出示例:
{"calle":"Calle","numero":100}
这里有一些例子:Does it make sense to use reflection when implementing toString()?
k5ifujac2#
您可以创建如下所示的实用程序类(注意:单引号引用的JSON无效,但如果这是您想要的):
public final class JsonBuilder { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); static { //OBJECT_MAPPER.enable(SerializationFeature.INDENT_OUTPUT); OBJECT_MAPPER.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false); } public static <T> String toJson(final T obj) { if (null == obj) { return null; } Class<?> cls = obj.getClass(); ObjectWriter objectWriter = OBJECT_MAPPER.writerFor(cls); try { return "'" + cls.getName() + "':" + objectWriter.writeValueAsString(obj); } catch (JsonProcessingException e) { throw new IllegalArgumentException(e); } } }
然后是toString()方法
toString()
@Override public String toString() { return JsonBuilder.toJson(this); }
这将输出:'MyClass':{'myVariable':0}如果要缩进输出,只需使用SerializationFeature.INDENT_OUTPUT取消ObjectMapper配置的注解
'MyClass':{'myVariable':0}
SerializationFeature.INDENT_OUTPUT
2条答案
按热度按时间j1dl9f461#
你可以使用像Jackson或Gson这样的图书馆,
示例:
与Jackson:
与Gson:
输出示例:
这里有一些例子:Does it make sense to use reflection when implementing toString()?
k5ifujac2#
您可以创建如下所示的实用程序类(注意:单引号引用的JSON无效,但如果这是您想要的):
然后是
toString()
方法这将输出:
'MyClass':{'myVariable':0}
如果要缩进输出,只需使用
SerializationFeature.INDENT_OUTPUT
取消ObjectMapper配置的注解