org.codehaus.jackson.JsonParseException при десериализации строки - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть следующая строка в файле ресурсов, и я пытаюсь десериализовать в Map, используя ObjectMapper

{13714974: {get-url: "* https://example.com/get", post-url:"https://example.com/post"}, 13743772: {get-url:" https://example.com/get", post-url: "https://example.com/post"}

ObjectMapper mapper = new ObjectMapper();
        mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
        Map<String, Map<String, String>> cmMappings = mapper.readValue(content, Map.class);

Когда я используюCodehaus Jackson ObjectMapper и попытаться десериализовать его, я получаю исключение,

Exception in thread "main" org.codehaus.jackson.JsonParseException: Unexpected character ('1' (code 49)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name
 at [Source: java.io.StringReader@7cdbc5d3; line: 1, column: 3]
    at org.codehaus.jackson.impl.JsonParserBase._constructError(JsonParserBase.java:651)
    at org.codehaus.jackson.impl.JsonParserBase._reportError(JsonParserBase.java:635)
    at org.codehaus.jackson.impl.JsonParserBase._reportUnexpectedChar(JsonParserBase.java:576)
    at org.codehaus.jackson.impl.ReaderBasedParser._handleUnusualFieldName(ReaderBasedParser.java:385)
    at org.codehaus.jackson.impl.ReaderBasedParser._parseFieldName(ReaderBasedParser.java:268)
    at org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:118)

и при запуске кода для десериализации файла ресурсов, содержащего строку этого формата, я получаю Exception while deserialising because of hyphen in field names.

Я пробовал и более быстрый XML ObjectMapper, но он не работает

Так как мне отладить строку на карте?

1 Ответ

0 голосов
/ 19 ноября 2018

Вот как мы десериализовали вышеуказанную строку

try {    
    ObjectMapper mapper = new ObjectMapper();
    ClassPathResource resource = new ClassPathResource("resourceFile");
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
    TypeReference<HashMap<String, Map<String, String>>> typeRef = new TypeReference<HashMap<String, Map<String, String>>>() {};
    cmMappings = mapper.readValue(resource.getInputStream(), typeRef);
} catch (Exception ex) {
   // log error    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...