为了账号安全,请及时绑定邮箱和手机立即绑定

我如何将 JsonObject 映射到 java 中的另一个 JsonObject

我如何将 JsonObject 映射到 java 中的另一个 JsonObject

长风秋雁 2022-04-28 15:55:09
我有一个 API (A) 接收请求并将这些请求发送到另一个 API (B)。但是,在 API (A) 向 API (B) 发送请求之前,它需要按照 API (B) 接受请求的方式来格式化它们。API (A) 中接收到的一些数据将不会被使用或映射到发送到 API (B) 的请求,API (B) 中的一些数据字段也将是空的。我想将 API (A) 中的字段映射到 (B) 接受的格式。这是 API (A) 接收请求的格式:{"customer" : {    "name" : "Bob",    "phone" : "000-123-4567",    "email" : "bob@email.com",    "zip" : "12345"    }}这是 API (B) 接收请求的格式。这是我想在将 API (A) 收到的所有请求发送到 API (B) 之前将其转换为的格式。这是一个例子:{"transaction" : {    "name" : "Bob",    "phone" : "000-123-4567",    "address" : "",     "city" : ""    }}所以匹配的键将被映射,不匹配的键将保持为空。我不能改变 API (A) 接收请求的方式并将其匹配到与 API (B) 请求相同的格式的原因是因为我将它与多个 API 集成。我不确定是否有一种简单的方法可以做到这一点。到目前为止,我已经考虑过创建一个方法,该方法将接收一个 json 对象(这将是 A 收到的请求)和一个 RequestB 对象(我将创建并表示发送到 API B 的请求)比较匹配的键并设置值,然后返回格式正确的请求,以便将其发送到 API (B)。但是,由于 API (A) 将与多个 API 进行通信(要转换/映射到的多种格式),因此这可能不是一个好的解决方案。有任何想法吗?
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

考虑到您需要在系统中创建属于不同的模型APIs,您可能需要研究 Java 的对象映射框架以简化您的工作,例如:

  • 是一种声明方式(Dozer)

  • 是一种命令式的方式(模型映射器)

还有一些其他的,你可以选择其中任何一个。


查看完整回答
反对 回复 2022-04-28
?
心有法竹

TA贡献1866条经验 获得超5个赞

在@Darshan_Mehta 的答案的附件中,我想推荐MapStruct。映射器类可以通过注释以最小且直观的方式定义:


@Mapper

public interface CustomerMapper {

    Transaction toTransaction(Customer input);

}

实际实现是在编译时利用Pluggable Annotation Processing API生成的。


查看完整回答
反对 回复 2022-04-28
  • 2 回答
  • 0 关注
  • 243 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号