tor*_*tal 38 java orm json gson
@Override
public String toString() {
return new Gson().toJson(this);
}
Run Code Online (Sandbox Code Playgroud)
我是否通过简单地将此作为我的模型对象的默认行为来打破一些好的做法,"Joshua" -模式,一般设计模式或其他约定?
toString()无论如何只会在我们当前使用的范例(Android)中用于调试.这也是我喜欢在JSON中看到对象的原因,因为很多ORM/json持久性将通过http-> php/python-> mysql和本地SQLite发生.
Ana*_*ika 68
是.使用GSON/Jackson/Reflections库来实现toString()方法是可以的.
实现toString方法的方法很少.
思考(Apache库)
@Override
public String toString(){
return org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(this);
}
Run Code Online (Sandbox Code Playgroud)基于JSON的实现(GSON,Jackson库)
// GSON library for JSON
@Override
public String toString(){
return new com.google.gson.Gson().toJson(this);
}
// Jackson libabry for JSON/YAML
@Override
public String toString() {
try {
return new com.fasterxml.jackson.databind.ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(this);
} catch (com.fasterxml.jackson.core.JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)ToStringBuilder(与apache-commons库一起提供)
@Override
public String toString() {
return new org.apache.commons.lang3.builder.ToStringBuilder(this).
append("field1", field1).
append("field2", field2).
toString();
}
Run Code Online (Sandbox Code Playgroud)硬核toString()实现
@Override
public String toString() {
return new StringBuilder()
.append("field1:"+field1)
.append("field2:"+field2)
.toString();
}
Run Code Online (Sandbox Code Playgroud)这样做是没有害处的.我建议你为你的Gson实例创建一个静态变量并启用漂亮的打印:
static Gson gson = new GsonBuilder().setPrettyPrinting().create();
Run Code Online (Sandbox Code Playgroud)
这样,方法的输出toString将被格式化.