如何为保证放心的请求发送密钥的数组值

问题描述

下面是预期的请求,该请求应该到达系统,但在将数组发送为字符串时发送给它?

预期 { "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正文。 预先感谢。

解决方法

Map更改为:

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

并创建常规列表或数组,而不使用JSONArray对象。 array.toJSONString()已经产生JSON个字符串,并将其作为值放置到另一个对象中。

queryParam.put("subClass",Arrays.asList("String1","String2"));