我是java的新手(哼......不......我10年前在学校学过Java,但从今天起就没用过它)。
我有一个对应于我的json的对象类,它是使用网站http://www.jsonschema2pojo.org/生成的(在此简化):
public class ServerDatasObject {
private Integer error;
private Boolean isOffline;
public Integer getError() {
return error;
}
public Boolean getIsOffline() {
return isOffline;
}
}
另一个用于访问所有对象数据的类(也简化了):
public class ServerDatasHandler extends ServerDatasObject {
public ServerDatasHandler(String json) {
Gson gson = new Gson();
// how to populate current object using : gson.fromJson(json, ServerDatasObject.class);
}
}
问题在于代码:如何填充当前对象?
我搜索并发现了一些关于InstanceCreator
的信息:
final Foo existing;
InstanceCreator<Foo> creator = new InstanceCreator<Foo>() {
public Foo createInstance(Type type) { return existing; }
}
Gson gson = new GsonBuilder().registerTypeAdapter(Foo.class, creator).create();
Foo value = gson.fromJson(jsonString, Foo.class);
// value should be same as existing
但我不明白如何使用它,以及它是否是我需要的。
最终目标是
{
ServerDatasHandler serverDatasHandler = new ServerDatasHandler (json);
do something with serverDatasHandler.getError()
}
感谢您的帮助
答案 0 :(得分:0)
您可以创建一个单独的静态方法,从json:
创建处理程序public static ServerDatasHandler fromJsonConfig(String json) {
Gson gson = new Gson();
ServerDatasHandler handler = gson.fromJson(json, ServerDatasHandler.class);
return handler;
}
当然,您也可以将此方法移至工厂。
我从未在构造函数中使用InstanceCreator
,因为解析JSON几乎不是构造函数的任务。最好将它隐藏在框架或您自己的工厂内。但是,如果您从InstanceCreator
方法返回ServerDatasHandler.this
,则createInstance
的示例也会有用。