将 JSON 子对象映射到字段

Posted

技术标签:

【中文标题】将 JSON 子对象映射到字段【英文标题】:Mapping JSON Subobject to field 【发布时间】:2016-06-24 03:25:20 【问题描述】:

我正在尝试使用 GSON(通过改造)映射 JSON 对象。

我的 JSON 如下所示:


  "id" = 1,
  "artist" = 
    "id" = 1
  

我知道它可以这样映射:

class MyObject
  int id;
  Artist artist;


class Artist
  int id;

是否可以删除额外的 Artist 类并执行以下操作:

class MyObject
  int id;
  @SerializedName("artist/id")
  int artistId;

提前致谢!

【问题讨论】:

为什么要删除 Artist 类? 我不想删除它,我想摆脱这个类中的引用。 (因为这个类被保存在我的 ORM 中)此外,Artist 对象本身包含更多字段,但在这种情况下,id 是唯一相关的字段。 你可以为MyObject类写一个自定义的序列化器,这里有一个参考javacreed.com/gson-serialiser-example 您想对 class 对象执行自定义序列化并希望 JSON 像 "id" : 1, "artist.id" :1 @Hemant 对不起,也许我应该更清楚。我想反序列化一个对象,而不是序列化。由于数据来自 api。 【参考方案1】:

我知道有两种方法可以实现您真正想要实现的目标?为您自己的Class 编写CustomizeSerializer 的一种方法

查看我对这个问题答案 >> How To write Custom Serializer For Your POJO

另一种方法>> Google GSON Serializer Examples

【讨论】:

对不起,也许我应该更清楚。我想反序列化一个对象,而不是序列化。由于数据来自 api。 让你在代码中编写两个 Java POJO 的 ArtistMyObject。那你就轻松了 是的,但我正在努力防止这种情况发生

以上是关于将 JSON 子对象映射到字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jackson 将 JSON 键值数组动态映射到子对象?

Restkit - 只有子 ID 的映射

从 json 动态创建的 Javascript 表单输入,需要将对象映射到另一个对象的正确字段并保存

@RequestBody 没有将 JSON 映射到 Java 对象 - Spring Boot

在使用 SpringBoot 开发的 REST API 中映射到 Java 对象时,使 JSON 有效负载字段不区分大小写

如何使用对象映射器从响应 JSON 映射子数组?