Тип отображения Джексона Джсона Внутренний класс - программирование
Подтвердить что ты не робот

Тип отображения Джексона Джсона Внутренний класс

Я пытаюсь создать внутренний тип класса для объекта, передаваемого как 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" } }
4b9b3361

Ответ 1

Если это возможно, сделайте свою жизнь простой и переместите внутренний класс в обычный класс со ссылкой в ​​классе "Настройки". И затем выполните сортировку с помощью джексона, вот как вы можете иметь свои классы:

public class Settings {
  private int offset;
  private int limit;
  private String type;
  private Map<String, Criteria> criteria;
  private Criteria criteria;
}


 class Criteria {
    private String restriction;
    private Object value;
  }

Ответ 2

Правильный ответ заключается в том, что вам не хватает ключевого слова static во внутреннем классе.

Просто убедитесь, что есть ключевое слово static.

Прочитайте http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html

вам нужно 3 минуты, но радуйся до конца дня.