Как правильно построить JSON строк в Java, чтобы в результате вы не получили лишних символов sla sh? - PullRequest
3 голосов
/ 25 мая 2020
• 1000 со строками в нем.

Проблема в том, что когда JSON возвращается в браузер, в нем есть лишние символы \\ ...

Пример:

{"readyState":4,"responseText":"{\"success\":false,\"messages\":\"{\\\"error\\\":\\\"Error modifying the user.\\\"}\"}" ...

После поиска похоже, что это могут быть вложенные JSON данные, которые вызывают проблему?

Я создаю его вот так ...

import com.fasterxml.jackson.databind.ObjectMapper;

public String toJSON() {
    String sRet = "";

    Map<String,String> messages = new HashMap<String,String>();
    messages.put("error", "Error modifying the user.");

    ObjectMapper mapper = new ObjectMapper();
    try {
        sRet = mapper.writeValueAsString(messages);
    } catch (Exception x) {
        // ...
    }

    return sRet;
}

И затем возвращаю его в браузер вот так ...

@RequestMapping(value = "/json/user", method = RequestMethod.POST)
public ResponseEntity<String> modifyUser(@RequestBody String json) throws Exception {
    boolean bSuccess = true;

/* ... do the modify user stuff which builds a Messages object, and sets bSuccess = false if there's an error ... */

    JSONObject replyObj = new JSONObject();
    replyObj.put("success", bSuccess);
    replyObj.put("messages", messages.toJSON());
    return new ResponseEntity<String>(replyObj.toJSONString(), (bSuccess) ? HttpStatus.OK : HttpStatus.BAD_REQUEST);        
}

Как правильно построить этот JSONObject, чтобы в нем не было всех лишних косых черт?

1 Ответ

0 голосов
/ 25 мая 2020

Лично я всегда использую GSON при работе с JSON в java.

Вы правы, ваша проблема связана с вложением JSON, вы добавляете строку, которая содержит "в сообщения, он избегает их, потому что думает, что вам нужна такая буквальная строка. Он не знает, что это тоже объект.

Вы пробовали просто сделать это?

replyObj.put("messages", messages);
...