我用杰克逊创造了json。它工作正常。但是在使用jackson解析json的过程中,我遇到了Escaping商标符号的问题。任何人都可以建议我如何逃脱json jackson提供的图书馆。 提前谢谢。
答案 0 :(得分:2)
嗯,基本上你不必这样做。我写了一个小测试用例来告诉你我的意思:
public class JsonTest {
public static class Pojo {
private final String value;
@JsonCreator
public Pojo(@JsonProperty("value") final String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
@Test
public void testRoundtrip() throws IOException {
final ObjectMapper objectMapper = new ObjectMapper();
final String value = "foo ™ bar";
final String serialized = objectMapper.writeValueAsString(new Pojo(value));
final Pojo deserialized = objectMapper.readValue(serialized, Pojo.class);
Assert.assertEquals(value, deserialized.getValue());
}
}
以上说明商标符号可以序列化和反序列化而不会转义。
话虽如此,要解决您的问题,请确保使用正确的编码读取输入。编码可以是例如在打开URL或打开文件时设置
BufferedReader urlReader = new BufferedReader(
new InputStreamReader(
url.openStream(), "UTF-8"));
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream(file), "UTF-8"));
此外,如果您希望转义字符,请使用\
字符进行转义。
来自json.org上的文档:
string
是零个或多个Unicode字符的序列,用双引号括起来,使用反斜杠转义。字符表示为单个字符串。字符串非常类似于C或Java字符串。