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

标签 java json gson

试图找到一种方法来将 JSON 字符串字符串化,使用像 JavaScript 这样的转义字符。

例如——

输入:

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

输出:

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

我可以使用 Gson 将对象作为 JSON 字符串获取,但不能进行字符串化(使用转义字符)。

这可以用 Java 实现吗?

最佳答案

您的输入是一个作为文本的 JSON 对象,可能存储在 String 中。您实质上是在尝试将该文本 转换为 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\"}"

关于java - 如何将 JSON 对象内容编码为 JSON 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44000409/

相关文章:

java - 管理java gson后,json文件中的unicode字符不会被转换

java - 如何反序列化 EnumMap

java - 初始化对象后出现 NullPointerException

java - 得到一个奇怪的异常 Unparseable date : "6 Aug 2012"

c# - ASP.Net MVC - 如何处理 JSON 操作中的异常(返回 JSON 错误信息),同时发布过滤器的异常?

json - Microsoft.Graph 无法反序列化响应

android - 应用混淆器时 Gson 崩溃

java - Parcelable 对象错误 : Unmarshalling unknown type code *** at offset ***

java - 针对远程 Wildfly-8.0.0 运行 arquillian 时出现 NPE

javascript - 如何在 React Native ListView 中过滤和呈现重复出现的嵌套 JSON 数据?