将 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 的Artist
和 MyObject
。那你就轻松了
是的,但我正在努力防止这种情况发生以上是关于将 JSON 子对象映射到字段的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Jackson 将 JSON 键值数组动态映射到子对象?
从 json 动态创建的 Javascript 表单输入,需要将对象映射到另一个对象的正确字段并保存
@RequestBody 没有将 JSON 映射到 Java 对象 - Spring Boot
在使用 SpringBoot 开发的 REST API 中映射到 Java 对象时,使 JSON 有效负载字段不区分大小写