How to write a REST API method for which consume json format for list of objects

回眸只為那壹抹淺笑 提交于 2021-01-28 06:17:50

问题


I have written a method as following.

@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;
}

I am not able to consume the list of objects from json format. and my json is in following format

    {
        "beans": [{
        "id": 1133,
        "testConditionGroupId": 0,
        "testId": 0,
        "type": 0,
        "completeFlag": 0,
        "invalidFlag": 0,
        "retentionFlag": 0,
        "delBeforeFlag": 0,
        "dontReplicateFlag": 0,
        "releaseFlag": 0,
        "timeBase": 0.0,
        "name": "MeaResult_TEST_XYZABCD",
        "version": "V.1.0.1",
        "description": "M_Test",
        "mimeType": "MIME",
        "stardDate": "",
        "endDate": "",
        "attributeList": [{
            "id": 0,
            "name": "Test_Attribute1",
            "value": "A",
            "unit": "ms"
        }, {
            "id": 0,
            "name": "Test_Attribute2",
            "value": "B",
            "unit": "ms"
        }],
        "subMatrixList": [{
            "id": 0,
            "name": "Test_SubMatrixBean1_New",
            "version": "V.1.0.0",
            "mimeType": "MimeTyep",
            "NumberOfvalues": 3,
            "noOfRows": 1,
            "localColumnList": [{
                "id": 0,
                "name": "TestName_1_New",
                "version": "V.1.0.0",
                "mimeType": "MimeTyep",
                "sequence_Representation": "explicit",
                "independent": 1,
                "global_Flag": 15,
                "raw_Datatype": 1,
                "dataValues": ["1", "2", "3"],
                "flags": [15, 15, 15],
                "generation_Parameters": [1.0, 2.0, 3.0],
                "externalComponents": [],
                "attributeList": [],
                "meaQuantity": {
                    "id": 0,
                    "name": "TestName_1_New",
                    "unit": "ms",
                    "quantityName": "MeaQuantity_Quantity",
                    "description": "MeaQuantity_Test",
                    "localName": "TestName_1_New",
                    "size": 10,
                    "dataType": 1,
                    "min": 1.0,
                    "max": 10.0,
                    "attributeList": [{
                        "id": 0,
                        "name": "Test_Attribute1",
                        "value": "A",
                        "unit": "ms"
                    }, {
                        "id": 0,
                        "name": "Test_Attribute2",
                        "value": "B",
                        "unit": "ms"
                    }]
                }
            }],
            "attributeList": [{
                "id": 0,
                "name": "Test_Attribute1",
                "value": "A",
                "unit": "ms"
            }, {
                "id": 0,
                "name": "Test_Attribute2",
                "value": "B",
                "unit": "ms"
            }]
        }],
        "meaQuantityList": [{
            "id": 0,
            "name": "TestName_1_New",
            "unit": "ms",
            "quantityName": "MeaQuantity_Quantity",
            "description": "MeaQuantity_Test",
            "localName": "TestName_1_New",
            "size": 10,
            "dataType": 1,
            "min": 1.0,
            "max": 10.0,
            "attributeList": [{
                "id": 0,
                "name": "Test_Attribute1",
                "value": "A",
                "unit": "ms"
            }, {
                "id": 0,
                "name": "Test_Attribute2",
                "value": "B",
                "unit": "ms"
            }]
        }]
    }]
}

but when I am trying to POST request using postman it gives following error

WARNING: No message body reader has been found for request class MeasurementBeans, ContentType : application/json.

and also method is not executing.


回答1:


You are accepting a List<MeasurementBean> in the createMeasurement() method and the JSON you have mentioned is an object.

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

Just make it as an array by removing the starting {, "beans:" and ending }, i.e you just need to pass the array.



来源:https://stackoverflow.com/questions/50304240/how-to-write-a-rest-api-method-for-which-consume-json-format-for-list-of-objects

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!