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

假设我有以下 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 中使用。


慕婉清6462132
浏览 91回答 1
1回答

慕盖茨4494581

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基于字段:empNameList<EmployeeDTO> jsonSchema; // parsed JSON ListMap<String, EmployeeDTO> result = jsonSchema.stream().collect(Collectors.toMap(EmployeeDTO::getEmpName, Function.identity()));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java