ALLOW_UNQUOTED_FIELD_NAMES в библиотеке jackon JSON

Я использую библиотеку Джексона для сериализации / десериализации в / из JSON. Мне нужно, чтобы этот JSON имел минимально возможный размер, поэтому я включил функцию ALLOW_UNQUOTED_FIELD_NAMES, чтобы исключить все кавычки. Я знаю, что удаление кавычек - это не стандартный json, но сделать json маленьким - жесткое требование проекта. Сгенерированный json работает, но когда я пытаюсь прочитать значение json, я получаю исключение:

org. Неожиданный символ ('9' (код 57)): ожидал допустимого имени символ (для имени без кавычек) или двойные кавычки (для цитирования) в начале имя поля в [Источник: java.io.StringReader@1347d75 ; линия 1, column: 3]

При чтении этого json-файла возникает приведенное выше исключение:

{90110a2e-febd-470f-afa4-cf7e890d31b9:0,eec652ad-a4d9-4eb1-8d24-7c1a0c29449f:1}

Я читаю его следующим образом:

Map<String, Object> valuesMap = oM.readValue(json, new TypeReference<Map<String, Object>>() {});

, а средство отображения объектов, которое я использую как для чтения, так и для записи значений:

private static final ObjectMapper om = new ObjectMapper();
static {
    om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
    om.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
    om.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, true);
    om.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    om.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
}

I Я использую версию 1.6.3 Jackson в проектах отправителя и получателя. Необходимая версия для этой функции - 1.2+, поэтому я подумал, что, возможно, я не использую эту версию, но мой приемник является приложением Spring, и я проверил, что библиотека, установленная в папке libs, - 1.6.3.

What может я делаю не так? Возможно, эту функцию нельзя использовать с картами.

У меня есть другой вопрос, пока я просто отправляю карту, где ключ - это просто значение uuid, а значение - число. Могут ли у меня возникнуть проблемы, если я отправлю значение со специальными символами с включенной функцией ALLOW_UNQUOTED_FIELD_NAMES? Сможет ли Джексон сбежать от этого персонажа?

Спасибо.

15
задан Javi 27 January 2011 в 11:24
поделиться