杰克逊 Json 逃跑

Jackson Json Escaping

我使用 Jackson 创建了 json。它工作正常。但是在使用 jackson 解析 json 时,我在转义商标符号方面遇到了问题。任何人都可以建议我如何在 json jackson 提供的库中进行逃生。 提前致谢。

好吧,基本上你不必那样做。我写了一个小测试用例来告诉你我的意思:

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 上的文档:

A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. A character is represented as a single character string. A string is very much like a C or Java string.