【发布时间】:2021-08-10 07:13:51
【问题描述】:
我正在处理的视图模型具有如下方法:
public String getModelJson() {
final ItemModel model = this.getModel();
if (model == null) {
return StringUtils.EMPTY;
}
final GsonBuilder gsonBuilder = new GsonBuilder();
final Gson gson = gsonBuilder.create();
return gson.toJson(model);
}
此方法依赖 com.google.gson.Gson::toJson 将 POJO 模型序列化为我认为可以使用的 JSON 字符串。这是模型代码:
public final class ItemModel extends ContentFragmentModel {
@Expose
private String error;
@Expose
private String id;
@Expose
private String name;
public ItemModel(final ContentFragment fragment) {
super(fragment);
}
public String id() {
return this.id;
}
public String name() {
return this.name;
}
@Override
protected String getModelPath() {
return "/path/to/model";
}
}
当我从我的角度调用getModelJson 时,该方法总是返回{},即使我可以证明模型正在正确加载;如果我这样重写方法:
public String getModelJson() {
final ItemModel model = this.getModel();
return model != null ? "{\"name\": \"" + model.getName() + "\"}";
}
...它返回预期的输出:{"name": "item name"},其中item name 是从片段正确加载的名称。
如何让模型正确序列化?
【问题讨论】:
标签: java json model-view-controller gson