2011-09-25 77 views
1

对于解析JSON如this twitter API users/show response我一直在使用Jackson和Gson Java库作为候选人来完成这项工作。我只对JSON的一小部分属性感兴趣,所以Gson很好,因为它的语法非常简洁,但我失去了继续使用Gson的内部战斗,因为Jackson已经在我们的应用程序的其他地方使用过,并且它已经记录更好的表现(我承认这都是失去Gson的理由)。杰克逊与Gson的简单反序列化

对于像

public class TwitterUser { 
private String id_str; 
private String screen_name; 

public String getId_str() { 
    return id_str; 
} 

public void setId_str(String id_str) { 
    this.id_str = id_str; 
} 

public String getScreen_name() { 
    return screen_name; 
} 

public void setScreen_name(String screen_name) { 
    this.screen_name = screen_name; 
} 
} 

为GSON唯一的代码需要建立,这是一条线一个POJO,

TwitterUser user = new Gson().fromJson(jsonStr, TwitterUser.class); 

这很对我很好;可以很好地扩展并选择您想要的属性。另一方面,杰克逊从选定的领域构建POJO则更加费力。

Map<String,Object> userData = new ObjectMapper().readValue(jsonStr, Map.class); 
//then build TwitterUser manually 

TwitterUser user = new ObjectMapper().readValue(jsonStr, TwitterUser.class); 
//each unused property must be marked as ignorable. Yikes! For 30 odd ignored fields thats too much configuration. 

这样长篇大论的解释后,有没有办法,我可以使用杰克逊用更少的代码比上面的证明?

+0

,还应注意:你绝对不希望创建一个新的ObjectMapper每次 - 无论是使用单,或吉斯注入实例。幸运的是,主要问题也在下面得到解答! – StaxMan

+0

@StaxMan Yup,只是为了完整的代码示例。 – markdsievers

回答