我在向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定义是错误的吗?
答案 0 :(得分:1)
您的两个帖子功能都映射到同一个http端点。类上可能有一个@Path符号,为其所有方法指定一个端点,而RestEasy试图通过http方法(post,get等等)来区分。
您需要为每个帖子功能指定唯一的@Path注释。说:
@Path("/plan")
对于第一个和
@Path("/plans")
第二次。
答案 1 :(得分:1)
问题是,当您尝试POST到createPlans
时,请求由createPlan
方法处理,因为两种方法都处理相同的URL。
灵魂就是为这些方法制作两个不同的@Path
。