Java 仅当填写了所有字段时,才使用JAXB将JSON转换为对象

Java 仅当填写了所有字段时,才使用JAXB将JSON转换为对象,java,json,rest,jaxb,jersey,Java,Json,Rest,Jaxb,Jersey,我正在用Jersey构建一个RESTful web服务。我使用JAXB将传入的JSON对象转换为Java对象。不幸的是,这种方法允许创建没有所有必填字段的Java对象。如果我有3个必填字段,但JSON只包含1个字段,我希望看到抛出异常 资源类别: @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Resource { private int field1; private String field2

我正在用Jersey构建一个RESTful web服务。我使用JAXB将传入的JSON对象转换为Java对象。不幸的是,这种方法允许创建没有所有必填字段的Java对象。如果我有3个必填字段,但JSON只包含1个字段,我希望看到抛出异常

资源类别:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Resource {
  private int    field1;
  private String field2;
  private String field3;

  public Resource() {

  }

  ...
}
休息班: 有没有可能用JAXB实现这一点?如果没有,如何实现此输入验证


提前谢谢

在生成
JSON
之后,我经历了相同的场景,并应用了一些逻辑来解决这个问题

在列表中添加您认为必需的
字段名

public static final List<String> REQUIRED_FIELDS = new ArrayList<String>();
    static {
        REQUIRED_FIELDS.add("Field1");
        REQUIRED_FIELDS.add("Field2");
    };

您可以使用bean验证来注释bean的字段并验证它们。它不是也不应该是解析的一部分,而是一个单独的验证步骤。
public static final List<String> REQUIRED_FIELDS = new ArrayList<String>();
    static {
        REQUIRED_FIELDS.add("Field1");
        REQUIRED_FIELDS.add("Field2");
    };
public void validateRequiredFields(JSONObject jsonObject, List<String> requiredFields) throws ParserException, Exception {
        if (log.isDebugEnabled()) {
            log.debug("Entering validateForRequiredFields");
        }
        List<String> missingFields = new ArrayList<String>();
        try {
            if (requiredFields != null) {
                for (String requiredField : requiredFields) {
                    if (ifObjectExists(jsonObject, requiredField)) {
                        if (StringUtils.isEmpty(jsonObject.getString(requiredField))) {
                            missingFields.add(requiredField);
                        }
                    } else {
                        missingFields.add(requiredField);
                    }
                }
            }
            if (missingFields != null && missingFields.size() > 0) {
                throw new Exception(missingFields);
            }
        } catch (JSONException e) {
            throw new ParserException("Error occured in validateRequiredFields", e);
        }
    }