как вернуть настраиваемый ответ от остальных вебсервисов весной - PullRequest
0 голосов
/ 11 января 2019

Я ожидаю вывод точно как показано ниже (вы видите одинарные кавычки)

{
    "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);  
    }

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Хотя ответ Алессандро Пауэра абсолютно верен, у вас может не быть выбора.

Ясно, что требуемый ответ не является допустимым 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;
0 голосов
/ 11 января 2019

Для тех, кто предлагает ему просто разместить фактический список на карте: вопрос требует, чтобы в выводе списка были строки в одинарных кавычках.

Но строки в одинарных кавычках не допускаются стандартом JSON. Если вы действительно хотите сделать это, вам, вероятно, придется взломать решение, которое избегает сериализации JSON и вручную записывает весь ваш псевдо-JSON-ответ в тело ответа. Это, конечно, ужасная идея; вместо этого вы должны пересмотреть свое требование иметь одинарные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...