尝试使用JavaScript之类的转义字符来查找字符串化JSON字符串的方法。
例如 -
输入:
{"name":"Error","message":"hello"}
输出:
"{\"name\":\"Error\",\"message\":\"hello\"}"
我能够使用Gson将对象作为JSON String获取,但不能使用stringify(使用转义字符)。
这可以用Java吗?
答案 0 :(得分:2)
您的输入是一个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\"}"
答案 1 :(得分:0)
您可以在输出json字符串上尝试此操作:
String strWithEscChar = output.replaceAll("\"", "\\\\\"");
答案 2 :(得分:0)
另一种解决方案,我在评论中指出:
Jackson的JsonStringEncoder.quoteAsString()示例:stackoverflow.com/a/40430760/639107