Я пытаюсь создать внутренний тип класса для объекта, передаваемого как JSON, но пока я читал тонны здесь, а также на сайте Джексона, я, похоже, не могу получить правильную комбинацию, поэтому, если кто-либо еще есть какие-то указатели, которые они бы высоко оценили. Я опубликовал некоторые фрагменты ниже и удалил все геттеры и сеттеры, я не думал, что им нужна публикация. Я использую Jackson 2.2.
Классы, которые я пытаюсь десериализовать:
public class Settings {
private int offset;
private int limit;
private String type;
private Map<String, Criteria> criteria;
public class Criteria {
private String restriction;
private Object value;
}
}
Код, который я использую для десериализации:
ObjectMapper om = new ObjectMapper();
TypeFactory tf = om.getTypeFactory();
JavaType map = tf.constructMapLikeType( Map.class, String.class, Criteria.class );
JavaType type = typeFactory.constructType( Settings.class, map );
Settings settings = om.readValue( entity, type );
Мои данные тестирования JSON:
{ "type": "org.json.Car", "criteria": { "restriction": "eq", "value": "bmw" } }