将`JSON`发布到`ArrayList`会得到响应“请求JSON映射错误”

时间:2015-06-11 01:09:06

标签: json arraylist resteasy

我在向JSON

发布ArrayList时遇到问题

我有课程计划

 public class Plan {
    private String planId;
    private String planName;
        :
        :
}

ArrayList计划 - 计划清单

public class PlanList {
    private List<Plan> plans = new ArrayList<Plan>();
        :
        :
}

我有POST和GET REST API

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Plan createPlan(@CookieParam(SmsHttpHeaders.X_SMS_AUTH_TOKEN) String token, Plan plan, @HeaderParam("Organization-Id") String organizationIdByService);

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public PlanList createPlans(@CookieParam(SmsHttpHeaders.X_SMS_AUTH_TOKEN) String token, PlanList plans, @HeaderParam("Organization-Id") String organizationIdByService);

@GET
@Produces(MediaType.APPLICATION_JSON)
public PlanList retrieveAllPlans(@CookieParam(SmsHttpHeaders.X_SMS_AUTH_TOKEN) String token, @HeaderParam("Organization-Id") String organizationIdByService);

当我获取retrieveAllPlans时,我得到了以下JSON,就像我期望的那样。

{
  "plans": [
    {
      "planId":"1",
      "planName":"Plan 1"
    },
    {
      "planId":"2",
      "planName":"Plan 2"
    },
    {
      "planId":"3",
      "planName":"Plan 3"
    }
  ]
}

发布单个计划,createPlan,正常工作 但是,当我尝试以与GET返回相同的格式POST到createPlans时,我得到响应"Request JSON Mapping Error"

JSON格式不正确吗?我的REST定义是错误的吗?

2 个答案:

答案 0 :(得分:1)

您的两个帖子功能都映射到同一个http端点。类上可能有一个@Path符号,为其所有方法指定一个端点,而RestEasy试图通过http方法(post,get等等)来区分。

您需要为每个帖子功能指定唯一的@Path注释。说:

@Path("/plan")

对于第一个和

@Path("/plans")

第二次。

答案 1 :(得分:1)

问题是,当您尝试POST到createPlans时,请求由createPlan方法处理,因为两种方法都处理相同的URL。

灵魂就是为这些方法制作两个不同的@Path