你好,我正在发送JSON
数据,需要在后端验证JSON
。时间格式应为:dd,MMM,yyyy,hh,mm
。
这是我的JSON:
{
"equipmentID":"234",
"modality":"healthcaare",
"facilityID":"manipal",
"countryCode":"abc",
"isoCode":"1234",
"problemType":"234",
"problemArea":"priyanka",
"equipmentStatus":"sdsd",
"name":"taneja",
"phoneNumber":"13333344",
"extension":"12123",
"description":"x ray machine error",
"shortDescription":"2",
"timePeriod":"03-12-2011 04-37",
"serviceCode":"sdfdf",
"locale":"werfd",
"requestingApp":"icenter",
"examNumber":"sdd",
"seriesNumber":"dfdf",
"imageNumber":"dfdfd"
}
这是一个验证类 public class RequestValidator implements Validator {
@Override
public ValidationResult validate(String objectName, RequestData rqdata) {
// TODO Auto-generated method stub
ValidationResult result = new ValidationResult();
if (rqdata == null) {
result.addError("error.invalidObjectGraph", "Object graph not initialized correctly");
return result;
}
Validation.rule("EquipmentId", rqdata.getEquipmentID()).required().run(result);
Validation.rule("Modality", rqdata.getModality()).required().run(result);
Validation.rule("FacilityID", rqdata.getFacilityID()).required().run(result);
Validation.rule("CountryCode", rqdata.getCountryCode()).required().maxLength(3).matches("^[a-zA-Z]*$")
.run(result);
Validation.rule("ProblemType", rqdata.getProblemType()).required().run(result);
Validation.rule("Name", rqdata.getName()).required().maxLength(20).run(result);
Validation.rule("PhoneNumber", rqdata.getPhoneNumber()).required().maxLength(25).matches("[0-9]+").run(result);
Validation.rule("Extension", rqdata.getExtension()).required().maxLength(10).matches("[0-9]+").run(result);
Validation.rule("Description", rqdata.getDescription()).required().maxLength(300).run(result);
Validation.rule("ShortDescription", rqdata.getShortDescription()).required().maxLength(80).run(result);
Validation.rule("TimePeriod", rqdata.getTimePeriod()).required().matches("dd-MMM-yyyy hh-mm").run(result);
Validation.rule("Locale", rqdata.getLocale()).required().run(result);
System.out.println("value of requesting app is:" + rqdata.getRequestingApp());
Validation.rule("RequestingApp", rqdata.getRequestingApp()).required().matches("icenter").run(result);
System.out.println(result.getErrorDetails());
return result;
}
}
但我遇到了一个错误,提示日期格式不正确。请帮我解决一下。谢谢。
dd,MMM,yyyy,hh,mm
,但是你的代码检查的是dd-MMM-yyyy hh-mm
。应该使用哪个格式?另外请注意,MMM
是月份的文本名称,不易国际化。我的同事会将今天的月份缩写为 "Mär"。建议使用 ISO 8601 标准,因为它是 a) 标准;b) 易于理解;c) 易于排序(格式为 "yyyy-MM-dd hh:mm" 或 "yyyy-MM-ddThh:mm")。此外,请不要忘记时区。我建议在数据库中存储 UTC。 - Martin Bonner supports Monica