gson 如何将JSON对象内容编码为JSON字符串?

esbemjvw  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(215)

试图找到一种方法来字符串化JSON字符串,像JavaScript的转义字符。
比如说--

输入:

{"name":"Error","message":"hello"}

输出:

"{\"name\":\"Error\",\"message\":\"hello\"}"

我可以使用Gson将对象作为JSON字符串获取,但不能使用stringify(使用转义字符)。
这在Java中可能吗?

mcdcgff0

mcdcgff01#

您的输入是文本形式的JSON对象,可能存储在String中。您实际上是在尝试将 text 转换为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将正确执行该转换。
上面的代码将生成

Original JSON content: {"name":"Error","message":"hello"}
JSONified: "{\"name\":\"Error\",\"message\":\"hello\"}"

换句话说,jsonified现在包含JSON字符串的内容。
对于Jackson,过程是相同的,只是序列化包含JSON对象文本的String示例

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\"}"
u7up0aaq

u7up0aaq2#

另一个解决方案,我在评论中指出:
例如:stackoverflow.com/a/40430760/639107

mwngjboj

mwngjboj3#

您可以在输出json字符串上尝试以下操作:

String strWithEscChar = output.replaceAll("\"", "\\\\\"");

相关问题