Как написать метод REST API, для которого используется формат json для списка объектов - PullRequest
0 голосов
/ 12 мая 2018

Я написал следующий метод.

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

Я не могу использовать список объектов в формате json.и мой json имеет следующий формат

    {
        "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"
            }]
        }]
    }]
}

, но когда я пытаюсь отправить запрос POST с помощью почтальона, он выдает следующую ошибку

ПРЕДУПРЕЖДЕНИЕ: не найден читатель тела сообщения для запросаКласс MeasurementBeans, ContentType: application / json.

, а также метод не выполняется.

1 Ответ

0 голосов
/ 12 мая 2018

Вы принимаете List<MeasurementBean> в методе createMeasurement(), а JSON, который вы упомянули, является объектом.

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

Просто создайте его как массив, удалив начальный {, "beans:" и окончательный }, т.е. вам просто нужно передать массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...