Java JAX-RS客户端PUT/POST请求:无法在主体中创建实体(对象)

Java JAX-RS客户端PUT/POST请求:无法在主体中创建实体(对象),java,rest,jax-rs,Java,Rest,Jax Rs,我使用bog标准JAX-RS客户机代码,如下所示(借用自 ): ... Entity.json(amount); 现在,它失败了,就像返回400个错误请求一样 ... Entity.json(amount); 在接收端,发送的实体(金额)为空。知道为什么吗 ... Entity.json(amount); 我正在签入调试器,实体得到了一个真实的值,但是如果我构建一个test@Post end point,如下所示: @PutMapping(value = "/account/{accoun

我使用bog标准JAX-RS客户机代码,如下所示(借用自 ):

...
Entity.json(amount);
现在,它失败了,就像返回400个错误请求一样

...
Entity.json(amount);
在接收端,发送的实体(
金额
)为空。知道为什么吗

...
Entity.json(amount);
我正在签入调试器,实体得到了一个真实的值,但是如果我构建一个test@Post end point,如下所示:

@PutMapping(value = "/account/{accountUid}/savings-goals/{savingsGoalUid}/add-money/{transferUid}")
public Response getUserHistory(String amount,
                               @PathVariable("accountUid") UUID accountUid,
                               @PathVariable("savingsGoalUid") UUID savingsGoalUid,
                               @PathVariable("transferUid") UUID transferUid) {
    log.info("Amount: " , amount);

    return null;
}
...
Entity.json(amount);
这确实确认了金额为空

...
Entity.json(amount);

有什么帮助吗?

一端的金额是一个对象,另一端的金额是一个简单的字符串。您是否尝试过创建
Amount
类的
getUserHistory
方法

...
Entity.json(amount);
然后你可以这样做:

@PutMapping(value = "/account/{accountUid}/savings-goals/{savingsGoalUid}/add-money/{transferUid}")
public Response getUserHistory(Amount amount,
                               @PathVariable("accountUid") UUID accountUid,
                               @PathVariable("savingsGoalUid") UUID savingsGoalUid,
                               @PathVariable("transferUid") UUID transferUid) {
    log.info("Amount: " , amount);

    return null;
}
...
Entity.json(amount);
如果您希望接收json,那么我认为将完整的json对象映射到字符串是行不通的

...
Entity.json(amount);

希望这有帮助

希望能对某人有所帮助的答案是:

...
Entity.json(amount);
最后一点:

...
Entity.json(amount);
未为
Amount
生成所需的JSON结构。所需:

...
Entity.json(amount);
{
  "amount": {
    "currency": "GBP",
    "minorUnits": 1
  }
}
生成:

...
Entity.json(amount);
{ "currency": "GBP",
  "minorUnits": 1
}
为了解决这个问题,我在我的
Amount
类中添加了以下两个注释:

...
Entity.json(amount);
@JsonTypeName("amount")
@JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME)
public class Amount {
    private String currency;
    private long minorUnits;
}
这产生了所需的JSON格式

...
Entity.json(amount);
为了检查请求中JSON的值,我使用了以下命令:

...
Entity.json(amount);
response.readEntity(String.class)

打印了
金额的JSON字符串

是什么阻止了您创建自己的响应类型和添加错误消息?谢谢您,没有传递任何金额-log语句只打印
金额:
。我不认为这是一个转换的事情-否则我会得到一个错误的媒体例外或类似的东西,我想。问题是:请求正文中没有传递任何内容:(
...
Entity.json(amount);