2015-02-16 4 views
1

Я создал json используя Jackson. Он работает нормально. Но при разборе json с использованием jackson у меня были проблемы с символом торговой марки Escaping. может ли кто-нибудь предложить мне, как сделать побег в библиотеке json jackson. Спасибо заранее.Jackson Json Escaping

ответ

1

Ну, в принципе, вам не обязательно это делать. Я написал небольшой тест, чтобы показать вам, что я имею в виду:

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.