【问题标题】:Java - How to get all the field names from JSON SchemaJava - 如何从 JSON Schema 获取所有字段名称
【发布时间】:2017-10-27 06:04:51
【问题描述】:
{
    "type": "TestType",
    "schema": {
        "type": "object",
        "properties": {
            "field1": {
                "format": "date",
                "label": "field 1",
                "type": "string"
            },
            "field2": {
                "format": "date",
                "label": "field 2",
                "type": "string"
            }
        },
        "required": [],
        "additionalProperties": false
    }
}

大家好,我是 JSON Schema 的新手,我只想知道如何定义 Java 模型以映射到 JSON Schema 之上,我想从定义中获取所有字段名称。

所以这意味着我要解析 JSON Schema 并像这样返回:

[field1, field2]

注意字段列表是自动的,可能会在 JSON Schema 中添加更多字段,field3, field4 ...

【问题讨论】:

    标签: java json jsonschema json-schema-validator


    【解决方案1】:

    1.转换为JSONObject

    2.保存在List

    3.将List转换为Array

    试试这个。

    public void getKey(String response) {
        List<String> keyList = new ArrayList<String>();
        try {
            JSONObject jsonObject = new JSONObject(response);
            JSONObject schema = jsonObject.getJSONObject("schema");
            JSONObject properties = schema.getJSONObject("properties");
            Iterator iterator = properties.keys();
            while (iterator.hasNext()) {
                String key = iterator.next().toString();
                keyList.add(key);
            }
            String[] arr = (String[]) keyList.toArray(new String[keyList.size()]);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    

    【讨论】:

    • 只是一件小事,但您不需要投射,因为您提供的数组 (new String[keyList.size()])
    • 感谢您的建议。
    • 祝你好运。@Tony
    【解决方案2】:

    我假设您的 json 位于名为 var 的字符串变量中。 下面的代码使用org.json

    JSONObject jObj=new JSONObject(var);
    ArrayList arr=new ArrayList();
    
    for (Object keyObj: jObj.keySet())
    {
        String key = (String)keyObject;
        arr.add(key);        
    }
    

    就是这样。

    我为使用 maven 的人添加了 org.json 包的 maven 依赖项!

    <dependency>  
        <groupId>org.json</groupId>  
        <artifactId>json</artifactId>  
        <version>20160810</version> 
    </dependency> 
    

    【讨论】:

    • OP 需要递归/查找结构,否则会找到“field1”和“field2”
    • 我认为他只需要properties中的对象的键。
    • 什么是变量?该代码将列出所有键。 jObj 已经是模式的一个实例了吗? OP 只有架构。
    • 这不是 OP 想要的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 2014-11-11
    • 2020-10-08
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多