Ger*_*ári 7 java serialization json jackson
// short-cut:
objectMapper.writeValueUsingView(out, beanInstance, ViewsPublic.class);
// or fully exploded:
objectMapper.getSerializationConfig().setSerializationView(Views.Public.class);
// (note: can also pre-construct config object with 'mapper.copySerializationConfig'; reuse)
objectMapper.writeValue(out, beanInstance); // will use active view set via Config
// or, starting with 1.5, more convenient (ObjectWriter is reusable too)
objectMapper.viewWriter(ViewsPublic.class).writeValue(out, beanInstance);
Run Code Online (Sandbox Code Playgroud)
所以我有:
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
mapper.getSerializationConfig().setSerializationView(ResourceView.PublicView.class);
Run Code Online (Sandbox Code Playgroud)
不工作的JavaDoc 1.8.2说: setSerializationView被弃用,我必须使用withView()
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
mapper.getSerializationConfig().withView(ResourceView.PublicView.class);
Run Code Online (Sandbox Code Playgroud)
还是行不通.JavaDoc 2.2.0说
public SerializationConfig withView(Class<?> view)从类复制的描述:MapperConfigBase
构造和返回具有不同视图的新实例的方法.
但我无法将新的SerializationConfig设置为现有的ObjectMapper
我在服务器端使用Jersey和JAX-RS
它应该通过以下方式工作:
mapper.setConfig(mapper.getSerializationConfig().withView(ResourceView.PublicView.class));
Run Code Online (Sandbox Code Playgroud)
对于泽西岛,我必须将视图设置为JacksonJsonProvider
ResourceConfig config = new ResourceConfig();
config.packages("com.example.foo");
JacksonJsonProvider jjp = new JacksonJsonProvider();
jjp.setDefaultWriteView(ResourceView.PublicView.class);
config.register(jjp);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5861 次 |
| 最近记录: |