Как отправить значение массива для одного ключа для уверенного запроса

Ниже приведен ожидаемый запрос, который должен попасть в систему, но при его отправке массив становится строкой?

Ожидается { "class": "A", "subUsecases": [ "string1", "String2" ] }

Чтобы сгенерировать вышеизложенное, я создаю объект Array и отправляю запрос, но он оказывается чем-то вроде этого в запросе с уверенностью.

Действительный

{"Class": "A", "subClass": "[\"String1\",\"String2\"]"}

Из-за фактического результата, приведенного выше, API думает, что это строка для подкласса, а не обрабатывает ее как массив. Но код хочет, чтобы это был массив для подкласса.

Я использую hasmap для создания вышеуказанного. Как это

@Test
    public void mm(){
        HashMap<String,String> queryParam = new HashMap<>();
        queryParam.put("CLASS","A");
        queryParam.put("subClass", arrayMethod("String1","String2"));
    }

    public String arrayMethod(String s1, String s2){
        org.json.simple.JSONArray array = new JSONArray();

        array.add(s1);
        array.add(s2);

        return array.toJSONString();
    }

queryParam идет как jsonbody.

Теперь, как отправить, как и ожидалось, тело json вместо фактического тела json. Заранее спасибо.


person Sobhit Sharma    schedule 27.08.2020    source источник
comment
Лучше использовать класс в качестве результата   -  person YCF_L    schedule 27.08.2020
comment
Вы не против уточнить?   -  person Sobhit Sharma    schedule 27.08.2020


Ответы (1)


Измените Map на:

HashMap<String, Object> queryParam = new HashMap<>();

И создайте обычный список или массив вместо использования объекта JSONArray. array.toJSONString() создает уже JSON строку, которую вы помещаете в качестве значения для другого объекта.

queryParam.put("subClass", Arrays.asList("String1", "String2"));
person Michał Ziober    schedule 27.08.2020