Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—如何从JSON模式获取所有字段名_Java_Json_Jsonschema_Json Schema Validator - Fatal编程技术网

Java—如何从JSON模式获取所有字段名

Java—如何从JSON模式获取所有字段名,java,json,jsonschema,json-schema-validator,Java,Json,Jsonschema,Json Schema Validator,大家好,我是JSON模式的新手,我只想知道如何定义Java模型到JSON模式之上的映射,我想从定义中获取所有字段名 这意味着我要解析JSON模式并返回如下结果: { "type": "TestType", "schema": { "type": "object", "properties": { "field1": { "format": "date", "la

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

这意味着我要解析JSON模式并返回如下结果:

{
    "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模式、字段3、字段4…

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

[field1, field2]
就这样

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

JSONObject jObj=new JSONObject(var);
ArrayList arr=new ArrayList();

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

org.json
json
20160810

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

[field1, field2]
就这样

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

JSONObject jObj=new JSONObject(var);
ArrayList arr=new ArrayList();

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

org.json
json
20160810

1.转换为
JSONObject

2.保存在
列表中

3.将
列表
转换为
数组

试试这个

<dependency>  
    <groupId>org.json</groupId>  
    <artifactId>json</artifactId>  
    <version>20160810</version> 
</dependency> 
public void getKey(字符串响应){
List keyList=new ArrayList();
试一试{
JSONObject JSONObject=新JSONObject(响应);
JSONObject schema=JSONObject.getJSONObject(“schema”);
JSONObject属性=schema.getJSONObject(“属性”);
迭代器迭代器=properties.keys();
while(iterator.hasNext()){
字符串键=迭代器.next().toString();
keyList.add(key);
}
字符串[]arr=(字符串[])keyList.toArray(新字符串[keyList.size()]);
}捕获(JSONException e){
e、 printStackTrace();
}
}

1.转换为
JSONObject

2.保存在
列表中

3.将
列表
转换为
数组

试试这个

<dependency>  
    <groupId>org.json</groupId>  
    <artifactId>json</artifactId>  
    <version>20160810</version> 
</dependency> 
public void getKey(字符串响应){
List keyList=new ArrayList();
试一试{
JSONObject JSONObject=新JSONObject(响应);
JSONObject schema=JSONObject.getJSONObject(“schema”);
JSONObject属性=schema.getJSONObject(“属性”);
迭代器迭代器=properties.keys();
while(iterator.hasNext()){
字符串键=迭代器.next().toString();
keyList.add(key);
}
字符串[]arr=(字符串[])keyList.toArray(新字符串[keyList.size()]);
}捕获(JSONException e){
e、 printStackTrace();
}
}

OP需要递归/搜索结构,否则会找到“field1”和“field2”。我认为他只需要
属性中对象的键?该代码将列出所有键。jObj已经是该模式的实例了吗?OP只有模式。这并不是OP想要的OP需要递归/搜索结构才能找到“field1”和“field2”。我想他只需要
属性
中对象的键。var是什么?该代码将列出所有键。jObj已经是该模式的实例了吗?OP只有架构。这不是OP想要的。这只是一件小事,但您不需要强制转换,因为您提供了数组(
新字符串[keyList.size()]
),谢谢您的建议。祝您好运。@Tony只是一件小事,但您不需要强制转换,因为数组(
新字符串[keyList.size()])
)谢谢你的建议。祝你好运。@Tony