我的 REST 服务返回以下 JSON
{
"name": "John",
"id" : 10
}
我可以使用 Jersey 将其编码到以下 Bean 中吗:
public class User{
private String name;
//getter & setter
}
我想用下面的代码来做到这一点,但它不起作用
WebResource webResource = client.resource(url);
webResource.accept(MediaType.APPLICATION_JSON_TYPE);
User user = webResource.get(User.class);
这是否可能,或者我必须在 Java Beans 中实现完整的 JSON 结构才能使其工作?
我知道我可以使用 Jackson 和任何其他方法解析此 JSON。
最佳答案
对于 Jackson,最简单的方法是像这样配置 ObjectMapper:
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
检查此示例提供程序
package com.company.rest.jersey;
@Provider
@Component
@Produces({MediaType.APPLICATION_JSON})
public class JacksonMapperProvider implements ContextResolver<ObjectMapper> {
ObjectMapper mapper;
public JacksonMapperProvider(){
mapper = new ObjectMapper();
mapper.configure(Feature.INDENT_OUTPUT, true);
// Serialize dates using ISO8601 format
// Jackson uses timestamps by default, so use StdDateFormat to get ISO8601
mapper.getSerializationConfig().setDateFormat(new StdDateFormat());
// Deserialize dates using ISO8601 format
// MilliDateFormat simply adds milliseconds to string if missing so it will parse
mapper.getDeserializationConfig().setDateFormat(new MilliDateFormat());
// Prevent exceptions from being thrown for unknown properties
mapper.configure(
DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
}
@Override
public ObjectMapper getContext(Class<?> aClass) {
return mapper;
}
}
关于java - Jersey - JSON 仅编码特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26625142/