我期望输出完全,如下所示(您会看到单引号)
{
"success": true,
"friends": ['Kanchhi@example.com','modi@example.com','maya@example.com','jetli@example.com','john@example.com'] ,
"count": 5
}
但目前我正在变成这样:(我们必须从中删除双引号)
{
"success": true,
"friends": "['Kanchhi@example.com','modi@example.com','maya@example.com','jetli@example.com','john@example.com']",
"count": 5
}
休息方法
@PostMapping(path = "/my", consumes = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<Map> getFriendListByEmail(@Valid @RequestBody String value) {
LinkedHashMap<Object, Object> map23 = new LinkedHashMap<>();
myList=userService.getfriendList(value); //getting some list say we have got 5 list of emails
String s ="'"+myList.toString().replace("[","").replace("]", "").replace(" ","").replace(",","','")+"'";
map23.put("success", true);
map23.put("friends", "["+s+"]"); // trying to put the updated string
map23.put("count", myList.size());
return new ResponseEntity<Map>(map23, HttpStatus.OK);
}
答案 0 :(得分:4)
对于那些建议他只是将实际列表放置在地图上的人:这个问题要求列表的输出具有单引号的字符串。
但是JSON标准不允许使用单引号引起来的字符串。如果您真的要这样做,则可能需要破解一个避免JSON序列化并手动将整个伪JSON响应写入响应主体的解决方案。当然,这是一个可怕的主意。相反,您应该重新查看使用单引号引起来的字符串的要求。
答案 1 :(得分:2)
虽然亚历山德罗·鲍尔(Alessandro Power)的answer绝对正确,但您可能别无选择。
很明显,所需的响应不是有效的JSON,但诀窍是返回字符串。因此,构造并返回一个字符串,而不是ResponseEntity
。声明您的方法,例如:
public String getFriendListByEmail(...)
在正文中不要使用Map
,而是使用类似这样的东西:
String s = "{\"success\": true, ";
ObjectMapper om = new ObjectMapper();
s += "\"friends\": " + om.writeValueAsString(myList).replace('"', '\'') + ", ";
s += "\"count\": " + myList.size();
s += "}";
return s;