RK3*_*RK3 3 java rest json web-services jersey
我正在使用Jersey.Am开发一个休息Web服务,这对于webservices来说是一个新的东西.我需要将客户列表作为输入传递给rest webservice.在实现它时遇到了问题.
下面是我的客户对象类
@Component
public class customer {
private String customerId;
private String customerName;
Run Code Online (Sandbox Code Playgroud)
我的终点如下.addCust是调用webservice时调用的方法
@Path("/add")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public String addCust(@Valid customer[] customers){
//And json input is as below
{customers:{"customerId":"1","customerName":"a"},
{"customerId":"2","customerName":"b"}}
Run Code Online (Sandbox Code Playgroud)
但是球衣无法将json阵列转换为客户阵列.它返回400.日志显示"c没有可行的选择".如何将Json数组作为输入传递给webservice并转换为Array或ArrayList.任何帮助赞赏.
您的json无效,字段名称应始终双引号,并且数组放在[]内,例如:
{"customers":[{"customerId":"1","customerName":"a"},
{"customerId":"2","customerName":"b"}]}
Run Code Online (Sandbox Code Playgroud)
这就是为什么杰克逊不能解散它.但是这个json永远不适合你的api.以下是您应该发送的示例:
[{"customerId":"1","customerName":"a"},{"customerId":"2","customerName":"b"}]
Run Code Online (Sandbox Code Playgroud)
另一件事是您可以使用集合而不是数组:
@Path("/add")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public String addCust(@Valid List<Customer> customers){
Run Code Online (Sandbox Code Playgroud)
如果你想发送像这样的json:
{"customers":[{"customerId":"1","customerName":"a"},
{"customerId":"2","customerName":"b"}]}
Run Code Online (Sandbox Code Playgroud)
然后你必须用"客户"属性将所有内容包装到类中:
class AddCustomersRequest {
private List<Customer> customers;
public void setCustomers(List<Customer> customers) {
this.customers = customers;
}
public void getCustomers() {
return this.customers;
}
}
Run Code Online (Sandbox Code Playgroud)
并在您的API中使用它:
@Path("/add")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public String addCust(@Valid AddCustomersRequest customersReq){
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13724 次 |
| 最近记录: |