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

我有一个 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 进行通信(要转换/映射到的多种格式),因此这可能不是一个好的解决方案。有任何想法吗?


长风秋雁
浏览 245回答 2
2回答

HUWWW

考虑到您需要在系统中创建属于不同的模型APIs,您可能需要研究 Java 的对象映射框架以简化您的工作,例如:这是一种声明方式(Dozer)这是一种命令式的方式(模型映射器)还有一些其他的,你可以选择其中任何一个。

心有法竹

在@Darshan_Mehta 的答案的附件中,我想推荐MapStruct。映射器类可以通过注释以最小且直观的方式定义:@Mapperpublic interface CustomerMapper {    Transaction toTransaction(Customer input);}实际实现是在编译时利用Pluggable Annotation Processing API生成的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java