我正在开发一个使用Jackson进行JSON视图的Spring MVC应用程序。 假设我有两个类如下。
class A {
String prop;
B other;
// getters setters
}
class B {
Integer id;
String name;
}
我想要解决的是获取如下的JSON字符串。 对于完全初始化的A
实例{prop:"something", name:"otherthing"} // in here the class B
// is replaced with its propery name
insted of
{prop:"something, other:{id:5,name:"otherthing"}}
注意:上面提到的两个类是Hibernate的实体类。 我已经使用@JsonIgnore消除了JSON输出中的一些属性,它是否可行 使用注释替换子类及其属性?
答案 0 :(得分:2)
除了使用自定义序列化程序之外,这是不可能的,尽管有一个功能请求(http://jira.codehaus.org/browse/JACKSON-132)可能会在Jackson 1.9中出现(因为它具有相对较高的投票数,这意味着一些用户会非常喜欢看它实施了。)
答案 1 :(得分:0)
如果您能够使用Jackson以外的库进行JSON序列化,那么您可以将GSON(http://code.google.com/p/google-gson/)与自定义GsonBuilder对象一起使用,可能会让你接近你想要实现的目标。
如果您查看此blog post,它会以几种不同的方式展示如何自定义GSON序列化程序。我正在使用自定义ExclusionStrategy将我的模型对象(其中包含循环引用)正确地转换为使用Spring MVC的RESTful Web服务的JSON。 (请注意,我只是用它来序列化,而不是反序列化。)
我已经在不同的View bean中设置了我的GsonBuilder,你可以看到here。如果看起来它可以帮到你,你有任何问题,请告诉我。