为了账号安全,请及时绑定邮箱和手机立即绑定

如何生成具有动态键名称的对象类型的 JSON 模式?

如何生成具有动态键名称的对象类型的 JSON 模式?

慕婉清6462132 2023-08-04 16:33:08
假设我有以下 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()));


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信