如何将一个JsonObject映射到java中的另一个JsonObject,以便在API之间进行通信

如何将一个JsonObject映射到java中的另一个JsonObject,以便在API之间进行通信,java,json,mapping,integration,api-design,Java,Json,Mapping,Integration,Api Design,我有一个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",

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

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

  • 是一种声明方式(推土机)
  • 是一种强制方式(模型映射器)

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

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

@Mapper
public interface CustomerMapper {
    Transaction toTransaction(Customer input);
}
实际实现是在编译时生成的