gpt4 book ai didi

java - 在 Java 中构建 JSON 字符串的正确方法是什么,这样您就不会在结果中得到额外的斜杠字符?

转载 作者:行者123 更新时间:2023-12-05 07:07:56 25 4
gpt4 key购买 nike

我在后端使用 Spring MVC,在前端使用 Bootstrap/jQuery。

我的 WebController 的 REST Web 服务与 UserService 对话,执行操作,然后返回一个包含字符串的 Messages 对象。

问题是,当 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 的正确方法是什么,这样它就不会包含所有额外的斜杠?

最佳答案

我个人总是使用 GSON在 java 中处理 JSON 时。

你是对的,你的问题与嵌套 JSON 有关,你将包含 "的字符串添加到消息中,它会转义那些,因为它认为你想要这样的文字字符串。它不知道它也是一个对象。

你试过这样做吗?

replyObj.put("messages", messages);

关于java - 在 Java 中构建 JSON 字符串的正确方法是什么,这样您就不会在结果中得到额外的斜杠字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62003193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com