我使用Jackson 1.5生成JSON模式并尝试为java类生成json模式
我为Employee类尝试了以下代码
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Employee")
public class Employee {
int id;
String name;
Date date;
}
ObjectMapper mapper = new ObjectMapper();
JsonSchema jsonSchema = mapper.generateJsonSchema(Employee.class);
上面的代码为日期字段生成了数字类型,我是否需要指定任何注释来转换日期类型?
{
"type": "object",
"optional": true,
"items": {
"type": "number",
"optional": true
},
"properties":{
"id": {
"type": "integer",
"optional": true
},
"name": {
"type": "string",
"optional": true
},
"date": {
"type": "number",
"optional": true
}
}
}
此外,如果需要字段(例如,id),我如何指定在JSON模式中显示为“required”:true?
答案 0 :(得分:1)
不幸的是,Jackson不支持验证,例如验证必需的字段。 Beans Validation可以为此完成。
对于日期转换问题,Jackson FAQ可以很好地展示处理此问题的所有方法。
答案 1 :(得分:0)
“必需”可以使用“@JsonProperty(required = true)”注释指定。
public class Employee {
@JsonProperty(required = true)
int id;
String name;
Date date;
}
JSON模式标准中没有原始的“日期”类型,也没有对Jackson中任何日期验证注释的固有支持。
但是,有一种名为“format”的JSON模式概念,它阐明了“字符串”类型。这里支持的基本格式之一是“日期时间”,它意味着使用RFC 3339, section 5.6.给出的格式的日期。映射器可以支持这种格式,但如果没有明显的扩展,就不可能将“格式”注释添加到JSON模式中。