Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JSON对象内容编码为JSON字符串?_Java_Json_Gson - Fatal编程技术网

Java 如何将JSON对象内容编码为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

试图找到一种使用JavaScript等转义字符对JSON字符串进行字符串化的方法

例如——

输入:

{"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()示例: