java - Jersey - JSON 仅编码特定字段

标签 java json rest jersey

我的 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/

相关文章:

Java Observer 和 Observable 何时移除

security - 带有 REST 的基于角色的 Web UI

java.lang.IllegalArgumentException : Invalid character (CR or LF) found in method name

php - MySQL/PHP 数组到 Javascript

javascript - 如何在 javascript 中从 json 中获取行或单元格?

java - Jackson 不会将 XML 文件完全解析为 JSON

azure - 如何从 Power Automate 触发 Azure ML Pipeline

java - Spring MVC - 使用 java 为 Controller 创建 httprequest

java - Hibernate @NotEmpty 已弃用

java - 在 equals() 方法中测试泛型类型