问题描述
下面是预期的请求,该请求应该到达系统,但在将数组发送为字符串时发送给它?
预期
{ "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"));