杰克逊杰森类型映射内部类

时间:2013-06-25 05:43:00

标签: java mapping jackson

我正在尝试为作为JSON传递的对象创建内部类类型,但是虽然我已经阅读了这里以及Jackson的网站,但我似乎无法获得正确的组合,所以如果有其他人有任何指针,他们将非常感激。我在下面发布了一些片段并删除了所有的getter和setter,我没想到他们需要发帖。我正在使用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" } }

2 个答案:

答案 0 :(得分:52)

正确答案是你缺少内部类的静态关键字。

确保&#34;静态&#34;关键字就在那里。

阅读http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html

它需要你3分钟但是让你在一天的剩余时间里感到高兴。

答案 1 :(得分:11)

如果可以,那么让你的生活变得简单,并使用Settings类中的引用将内部类移动到普通类。然后使用jackson进行编组,以下是您可以使用的课程:

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;
  }