Тогда я решил использовать java.util.Properties (или, если быть точным: класс, производный от Properties) для этой цели, поскольку они реализуют именно такую иерархию карт: при создании нового экземпляра Properties вы можете предоставить родительский экземпляр Properties.
Я (де-)сериализую эти свойства в/из JSON, используя метод com.fasterxml.jackson(.databind)-библиотека (
Код: Выделить всё
com.fasterxml.jackson.databind.json.JsonMapper). Это работало без каких-либо проблем с Jackson v2, но теперь я только что обновился до Jackson v3, и в этой версии десериализация свойств не удалась.
При попытке чтения файлов JSON, созданных в более ранней версии, я продолжаю получать ошибки:
Файл «test.kmc» не является допустимой конфигурацией (причина: «com.fasterxml.jackson.databind.JsonMappingException: Проблема»). десериализация свойства "свойства" (ожидаемый тип: [тип карты; класс my.application.entities.NodeProperties, [простой тип, класс java.lang.String] -> [простой тип, класс java.lang.String]]; фактический тип: `java.util.Properties`), проблема: несоответствие типа аргумента в [Источник: (BufferedInputStream); строка: 8, столбец: 2] (через цепочку ссылок: my.application.entities.nodes.RootNode["properties"])
Примечание: класс NodePropertiesКод: Выделить всё
public class NodeProperties extends Properties {
...
}
Есть идеи, почему десериализация Джексона java.util.Properties завершается неудачей в версии 3.x? Это ожидаемое поведение? Требуется ли теперь для этого какой-то флаг или помощник?