Cor*_*han 14 javascript java json jackson
我正在尝试将json放在java中的javascript文件中,但是当我将json写入字符串时,该字符串似乎不是javascript的有效json; 它缺少一些逃脱.(这发生在json中的一个字符串中,我将其格式化为虚假的json.)
例如,这将是我的javascript文件中的有效json:
{
"message":
"the following books failed: [{\"book\": \"The Horse and his Boy\",\"author\": \"C.S. Lewis\"}, {\"book\": \"The Left Hand of Darkness\",\"author\": \"Ursula K. le Guin\"}, ]"
}
Run Code Online (Sandbox Code Playgroud)
不过,我得到的是双引号未被转义的地方:
{
"message":
"The following books failed: [{"book": "The Horse and his Boy","author": "C.S. Lewis"}, {"book": "The Left Hand of Darkness","author": "Ursula K. le Guin"}, ]"
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到了第二个结果:
new ObjectMapper().writer().writeValueAsString(booksMessage);
Run Code Online (Sandbox Code Playgroud)
但是当我用jackson将它直接写入文件时,我得到了第一个好结果:
new ObjectMapper().writer().writeValue(fileToWriteTo, booksMessage);
Run Code Online (Sandbox Code Playgroud)
那么为什么杰克逊在写入文件时会有不同的逃避方式呢?如何在写入字符串时让它像我一样逃脱?
类的writeValue()方法ObjectWriter对输入文本进行编码.
您不需要写入文件.获取相同字符串的另一种方法可能是:
StringWriter sw = new StringWriter();
new ObjectMapper().writer().writeValue(sw, booksMessage);
String result = sw.toString();
Run Code Online (Sandbox Code Playgroud)
我添加了
booksJson = Pattern.compile("\\\\").matcher(booksJson).replaceAll("\\\\\\\\");
Run Code Online (Sandbox Code Playgroud)
它转义所有转义字符。这样,当我将其写入文件并删除转义符时,我仍然拥有所需的转义符。结果我真正的问题是如何在不删除 Java 转义的情况下写入文件。
| 归档时间: |
|
| 查看次数: |
23385 次 |
| 最近记录: |