如何编写REST API方法,为对象列表使用json格式

时间:2018-05-12 08:24:33

标签: java json rest jax-rs

我写了一个方法如下。

Year  Receipt  TotalPrice   1    2    3    4    5    6    7    8    9    10    11    12
------------------------------------------------------------------------------------------
2018              1200     100   0   500  300   0   100   0    0    0   100   100     0
2018    Yes        800      0    0   400  100   0   100   0    0    0   100   100     0
2018    No         400     100   0   100  200   0    0    0    0    0     0    0      0
.
.

我无法使用json格式的对象列表。 我的json采用以下格式

@POST
@Path("/add")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
public boolean createMeasurement(List<MeasurementBean> list ,@HeaderParam(AUTHORIZATION) String authString){
    Gson gson = new Gson();
    LoginSession loginSession=null;
    try{

        loginSession = LoginUtility.validateKey(authString);
        ResultRO<List<HashMap<String, Object>>> resultRO = loginSession
                .execute(new Callable<ResultRO<List<HashMap<String, Object>>>>() {
                    @Override
                    public ResultRO<List<HashMap<String, Object>>> call() throws Exception {
                        String key[] = idKey.split(":");
                        String type = key[0];
                        long testId = Long.parseLong("2");
                        return doGetCreateMeasurement(list ,2);
                    }
                });
        return gson.toJson(true);
    }catch(Exception ex){
        ex.printStackTrace();
    }
    return null;
}

但是当我尝试使用邮递员发送请求时,它会出现以下错误

警告:找不到请求类MeasurementBeans的消息正文阅读器,ContentType:application / json。

并且方法也没有执行。

1 个答案:

答案 0 :(得分:0)

您接受List<MeasurementBean>方法中的createMeasurement(),并且您提到的JSON是一个对象。

{
        "beans": []
 //..
}

只需删除起始{"beans:"和结尾}即可将其设为数组,即只需传递数组即可。