繁体   English   中英

在JSON中给定ID的POJO中映射对象属性

Map an Object Property in a POJO given an ID from a JSON

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

首先,对不起,我无法更好地解释自己。

我正在编写一个示例API,我有一个名为Movie的POJO(使用JPA),因此在我的控制器中,我想给它一个JSON以插入Movie。

电影具有@ManyToOne(optional = false)属性,该属性与另一个名为GenreidGenreName )的POJO相关。

我想提供一个不是具有所有属性的对象,而是一个id的JSON,所以:

控制器

@RequestMapping(value = "/sendMovie", method = RequestMethod.POST)
public void setMovie(@RequestBody Movie movie) {
    mRepo.save(movie);
}

电影

@Entity
public class Movie {

    @Id
    @Column(name = "ID_MOVIE", nullable = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long idMovie;

    @Column(name = "NAME")
    private String name;

    @Column(name = "SYNOPSIS")
    private String synopsis;

    @Column(name = "POSTER")
    private String poster;

    @Column(name = "DIRECTOR")
    private String director;

    @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "idGenre")
    @JsonIdentityReference(alwaysAsId = true)
    @ManyToOne(optional = false)
    @JoinColumn(name = "ID_GENRE", referencedColumnName = "ID_GENRE")
    private Genre genre;

我要使用的JSON

{
  "name": "MATRIX",
  "idGenre": 3,
  "synopsis": "NEO DOING THINGS",
  "poster": "matrix.jpg",
  "director": "WACHOWSKIS"
 }

有可能实现这一目标吗?

1 个回复

您确实将JsonIdentity...批注放置在错误的位置。

您需要将这些注释放在@Genre类上:

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "idGenre")
@JsonIdentityReference(alwaysAsId = true)
public class Genre {
    @Id
    @Column(...)
    private Long idGenre;

    //....
}

并从Movie类的属性Genre genre中删除这些注释。 您还需要使用@JsonProperty("idGenre")告诉Jackson,您希望将此属性序列化为名称"idGenre"

@ManyToOne(optional = false)
@JoinColumn(name = "ID_GENRE", referencedColumnName = "ID_GENRE")
@JsonProperty("idGenre")
private Genre genre;

然后,JSON输出将如下所示:

{
  "name": "MATRIX",
  "synopsis": "NEO DOING THINGS",
  "poster": "matrix.jpg",
  "director": "WACHOWSKIS",
  "idGenre": 3
}
2 将JSON映射到现有的pojo对象

我最近加入了Web服务领域,并开始致力于使用json输入创建和更新休眠实体。 以下api将json输入转换为新的pojo对象: 这与create api一起使用效果很好。 现在如何更新API: 我有一个很大的pojo,我不想进入将来自json输入的每个值设置为pojo对 ...

3 如何将整个根 json 对象注入 Jackson 的 POJO 属性中?

我正在寻找将原始 JSON 部分(作为 String 或作为 JsonNode)放入模型对象的特定属性的标准方法。 找不到任何类似的东西,因为所有注释只能解决包含的属性名称/路径,而不是整个 JSON 对象。 我发现的最接近的东西是自定义反序列化器,但仍然不清楚在这种情况下如何使用它。 是 ...

4 将JSON映射到具有单属性和多属性的多态POJO

我目前正在尝试开发一个与某个在线服务进行通信的REST客户端。 这个在线服务返回一些JSON响应,我希望使用Jackson映射到Java对象。 JSON响应的一个示例是: 请注意以下事项: 此结构包含一个简单的id和一个Field实例的集合,每个实例都有一个类型和一个值 ...

5 从JSON映射时,Jersey能从ID中找到POJO吗?

说起来很难,但我会尽力而为。 高级:我正在编写一个Web服务,以向数据库中添加一个新的PrblFldr实体,但是我需要将适当的PrblTmplt与其关联(请忽略可怕的命名方案,我没有这样做)。 我正在发布JSON,Jersey映射到正确的POJO。 但是,我希望它不用EntityMan ...

6 将Json映射到POJO

我得到了这种结构的响应,如何将其映射到我的POJO类。 任何人都可以为此json结构提供示例POJO类。 我正在使用Gson进行请求和响应。 ...

7 POJO对象到Java中的JSON对象转换

我需要将POJO或DTO对象转换为JSON格式,我使用了以下方法 JsonObject obj = gson.toJsonTree(pojo class).getAsJsonObject(); for (String key: obj.keySet()) { System.out.pr ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM