杰克逊杰森逃脱

时间:2015-02-16 15:54:02

标签: json jackson

我用杰克逊创造了json。它工作正常。但是在使用jackson解析json的过程中,我遇到了Escaping商标符号的问题。任何人都可以建议我如何逃脱json jackson提供的图书馆。 提前谢谢。

1 个答案:

答案 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字符串。

相关问题