杰克逊 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.
我使用 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.