如题
我现在在postman的请求是正常的
{
"accountName": "admin@",
"robotUuid": "8af",
"params":[{
"name":"jx_phone",
"value":"136056",
"type":"str"
},
{
"name":"jx_orgName",
"value":"136056",
"type":"str"
},
{
"name":"jx_isQuery",
"value":"false",
"type":"str"
}
]
}
但是写成java的方式有转译字符 请求结果就为空了 也就是没成功
// 封装请求参数
JSONObject json = new JSONObject();
json.put("accountName",accountName);
json.put("robotUuid",robotUuid);
JsonArray array = new JsonArray();
array.add(getParams("phone",phone));
array.add(getParams("orgName",orgName));
array.add(String.valueOf(getParams("isQuery",isQuery)));
json.put("params",array.toString());
["{\"name\":\"phone\",\"type\":\"str\",\"value\":\"136XXXX\"}","{\"name\":\"orgName\",\"type\":\"str\",\"value\":\"123123\"}","{\"name\":\"isQuery\",\"type\":\"bool\",\"value\":false}"]
String body = JSONObject.toJSONString(json);
结果是
{"accountName":"admin","robotUuid":"8af","params":"[\"{\\\"name\\\":\\\"phone\\\",\\\"type\\\":\\\"str\\\",\\\"value\\\":\\\"136XXX\\\"}\",\"{\\\"name\\\":\\\"orgName\\\",\\\"type\\\":\\\"str\\\",\\\"value\\\":\\\"123123\\\"}\",\"{\\\"name\\\":\\\"isQuery\\\",\\\"type\\\":\\\"bool\\\",\\\"value\\\":false}\"]"}
private String getParams(String key, String value) {
JSONObject params = new JSONObject();
params.put("name",key);
params.put("value",value);
params.put("type","str");
return params.toJSONString();
}
请问如何让jsonarray不携带过多的转义字符 或者有其他简单办法么 请各位大佬赐教
你稍微细心一点就知道了。
其实你的前部分是没有问题的。
{"accountName":"admin","robotUuid":"8af","params"
问题出在你的参数
你返回的是return params.toJSONString();这就有问题了
你应该是返回Json对象,json添加json,或者你可以用对象来描述,然后把对象转成json即可。
话说怎么不写成实例化对象类,每次我看工程一坨Json对象我都看得脑阔疼