Java - 如何从JSON Schema获取所有字段名称

时间:2017-10-27 06:04:52

标签: java json jsonschema json-schema-validator

{
    "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中添加更多字段......

2 个答案:

答案 0 :(得分:1)

我假设您的json位于名为var的String变量中。 使用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> 

答案 1 :(得分:1)

1.转换为JSONObject

2.save in List

3.convert ListArray

试试这个。

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();
    }
}