Java 如何将JSON对象内容编码为JSON字符串?
试图找到一种使用JavaScript等转义字符对JSON字符串进行字符串化的方法 例如—— 输入:Java 如何将JSON对象内容编码为JSON字符串?,java,json,gson,Java,Json,Gson,试图找到一种使用JavaScript等转义字符对JSON字符串进行字符串化的方法 例如—— 输入: {"name":"Error","message":"hello"} "{\"name\":\"Error\",\"message\":\"hello\"}" 输出: {"name":"Error","message":"hello"} "{\"name\":\"Error\",\"message\":\"hello\"}" 我可以使用Gson将对象获取为JSON字符串,但不能使用stri
{"name":"Error","message":"hello"}
"{\"name\":\"Error\",\"message\":\"hello\"}"
输出:
{"name":"Error","message":"hello"}
"{\"name\":\"Error\",\"message\":\"hello\"}"
我可以使用Gson将对象获取为JSON字符串,但不能使用stringify(使用转义字符)
这在Java中可能吗?您可以在输出json字符串上尝试:
String strWithEscChar = output.replaceAll("\"", "\\\\\"");
您的输入是作为文本的JSON对象,可能存储在
字符串中。实际上,您正在尝试将该文本转换为JSON字符串。所以就这么做吧
String input = "{\"name\":\"Error\",\"message\":\"hello\"}";
System.out.println("Original JSON content: " + input);
Gson gson = new Gson();
String jsonified = gson.toJson(input);
System.out.println("JSONified: " + jsonified);
由于引号(和其他字符)必须在JSON字符串中转义,因此toJson
将正确执行该转换
上面的代码将生成
原始JSON内容:{“name”:“Error”,“message”:“hello”}
JSONified:{\'name\':\'Error\',\'message\':\'hello\'}
换句话说,jsonified
现在包含JSON字符串的内容
对于Jackson,过程是一样的,只需序列化包含JSON对象文本的字符串实例
ObjectMapper mapper = new ObjectMapper();
StringWriter writer = new StringWriter();
mapper.writeValue(writer, input);
jsonified = writer.toString();
System.out.println("JSONified: " + jsonified);
产生
JSONified:“{\'name\':\'Error\',\'message\':\'hello\'”
另一种解决方案,我在评论中指出:
Jackson的JSONStringCoder.quoteAsString()示例:strJson.replace(“\”,“\ \”)代码>?@RobinTopper这正是我想要的。但Jackson的JsonStringCoder.quoteAsString()对我来说是一个更好的选择,因为它还可以更正JSON的格式。Jackson的JsonStringCoder.quoteAsString()示例: