如何在springbootjava中为动态json结构创建类

vnzz0bqm  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(550)

我有以下json结构作为输入,可以嵌套也可以不嵌套。我想在spring启动应用程序中获取json作为输入和处理。如何创建在json中包含动态键值的类。它可以是json输入中的任何键值对。下面是一个示例。
无嵌套:

{
    "mappings": {
        "properties": {
            "firstname": {
                "type": "string"
            },
            "lastname": {
                "type": "string"
            },
            "salary": {
                "type": "integer"
            },
            "date_of_birth": {
                "type": "date"
            }
        }
    }
}

嵌套的:

{
    "mappings": {
        "properties": {
            "firstname": {
                "type": "string"
            },
            "lastname": {
                "type": "string"
            },
            "annual_salary": {
                "type": "integer"
            },
            "date_of_birth": {
                "type": "date"
            },
            "comments": {
                "type": "nested",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "comment": {
                        "type": "string"
                    },
                    "age": {
                        "type": "short"
                    },
                    "stars": {
                        "type": "short"
                    },
                    "date": {
                        "type": "date"
                    }
                }
            }
        }
    }
}

我不知道如何创建一个类来支持在单个类中嵌套和不嵌套。我试过以下方法。这没用。

public class Schema {
    Mapping mappings;

    public Mapping getMappings() {
        return mappings;
    }

    public void setMappings(Mapping mappings) {
        this.mappings = mappings;
    }

    public static class Mapping {
        Property properties;

        public Property getProperties() {
            return properties;
        }

        public void setProperties(Property properties) {
            this.properties = properties;
        }
    }

    public static class Property {
        Map<String, Map<String, Object>> field = new HashMap<>();

        public Map<String, Map<String, Object>> getField() {
            return field;
        }

        public void setField(Map<String, Map<String, Object>> field) {
            this.field = field;
        }
    }
}
xdnvmnnf

xdnvmnnf1#

我遇到了一个类似的场景,在这个场景中,我的json可能没有一致的键值对。我在类级别给出了以下jackson注解,以便忽略模型中不可用的属性和json中存在的属性。

@JsonIgnoreProperties(ignoreUnknown = true)

相关问题