试图找到一种方法来字符串化JSON字符串,像JavaScript的转义字符。比如说--
输入:
{"name":"Error","message":"hello"}
输出:
"{\"name\":\"Error\",\"message\":\"hello\"}"
我可以使用Gson将对象作为JSON字符串获取,但不能使用stringify(使用转义字符)。这在Java中可能吗?
mcdcgff01#
您的输入是文本形式的JSON对象,可能存储在String中。您实际上是在尝试将 text 转换为JSON字符串。因此,请执行此操作。
String
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将正确执行该转换。上面的代码将生成
toJson
Original JSON content: {"name":"Error","message":"hello"} JSONified: "{\"name\":\"Error\",\"message\":\"hello\"}"
换句话说,jsonified现在包含JSON字符串的内容。对于Jackson,过程是相同的,只是序列化包含JSON对象文本的String示例
jsonified
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\"}"
u7up0aaq2#
另一个解决方案,我在评论中指出:例如:stackoverflow.com/a/40430760/639107
mwngjboj3#
您可以在输出json字符串上尝试以下操作:
String strWithEscChar = output.replaceAll("\"", "\\\\\"");
3条答案
按热度按时间mcdcgff01#
您的输入是文本形式的JSON对象,可能存储在
String
中。您实际上是在尝试将 text 转换为JSON字符串。因此,请执行此操作。由于引号(和其他字符)必须在JSON字符串中转义,因此
toJson
将正确执行该转换。上面的代码将生成
换句话说,
jsonified
现在包含JSON字符串的内容。对于Jackson,过程是相同的,只是序列化包含JSON对象文本的
String
示例产生
u7up0aaq2#
另一个解决方案,我在评论中指出:
例如:stackoverflow.com/a/40430760/639107
mwngjboj3#
您可以在输出json字符串上尝试以下操作: