假设我有以下 json:{ "empName": "rameshp", "designation": "SE1", "skills": [ { "id": 2, "rating": 4, "skillName": "Node.js 7", "skillCategory": "Programming" } ]}现在可能有多个像上面这样的对象,所以我想引用上面的模式,可以从https://www.jsonschema.net生成,但我希望将 empName 作为对象键,将上面作为值,所以它将是具有多个唯一键(empName)的对象,并且该值将引用上面的模式。考虑下面的例子,当 POJO 通过 序列化为 JSON 时Jackson,它应该如下所示:{ "rameshp": { "empName": "rameshp", "designation": "SE1", "skills": [ { "id": 2, "rating": 4, "skillName": "Node.js 7", "skillCategory": "Programming" } ] }, "john": { "empName": "john", "designation": "SE2", "skills": [ { "id": 2, "rating": 4, "skillName": "Node.js 7", "skillCategory": "Programming" } ] }}此场景的整体架构(JSON 架构)应该是什么?最终,jackson 将用于为此架构生成 POJO,并在我创建的 REST API 中使用。
1 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
DTO 类:
public class EmployeeDTO {
String empName;
String designation;
List<SkillDTO> skills;
// getter/setters here
}
public class SkillDTO {
Integer id;
Integer rating;
String skillName;
String skillCategory;
// getter/setters here
}
转换 JSON:
现在,将 JSON 解析为这些 DTO 后,您可以使用 Stream APIcollect将它们简单地Map基于字段:empName
List<EmployeeDTO> jsonSchema; // parsed JSON List
Map<String, EmployeeDTO> result = jsonSchema.stream().collect(Collectors.toMap(EmployeeDTO::getEmpName, Function.identity()));
添加回答
举报
0/150
提交
取消