我有一个看起来像这样的模型(Play 2.1.1 java ebean)
@Entity
public class Link extends Model {
@Id
public Long id;
@Lob
public String points;
}
其中points是原始json字符串,包含数组中的x,y坐标。
我不想将其反序列化为一系列Points,因为它只会用于UI。因此,我想将其保存到数据库中的文本字段
我希望属性点在通过线路发送到前端时被序列化为json数组,我希望前端能够发送一个json数组并再次将其转换为字符串。
在控制器中:
// Serialize
List<Link> links = Link.findAll();
return ok(Json.toJson(links));
// Deserialize
Link link = Json.fromJson(request().body().asJson(), Link.class);
我该怎么做?
自定义序列化器,解串器?
@JsonRawValue?
任何其他注释?
答案 0 :(得分:3)
答案比你想象的要简单得多。
@Lob
public String points;
public JsonNode getPoints() {
return Json.parse(StringUtils.isBlank(points) ? "[]" : points);
}
@JsonSetter
public void setPoints(JsonNode json) {
points = json.toString();
}
虽然我不喜欢吸气剂和吸气剂,但它有效。
如果有人有更通用的更好的解决方案,请随意发布另一个答案:)