Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 - Fatal编程技术网

Java 如何从JSON数组中获取密钥?

Java 如何从JSON数组中获取密钥?,java,Java,//外部jsonArray文件 { "items": [ { "index": 10, "index_start_at": 56, "integer": 12, "float": 16.8248, "Firstname": "Natalie", "surname": "MacDonald", "fulln

//外部jsonArray文件

{

    "items": [
        {
            "index": 10,
            "index_start_at": 56,
            "integer": 12,
            "float": 16.8248,
            "Firstname": "Natalie",
            "surname": "MacDonald",
            "fullname": "Hilda Rich",
            "email": "eva@durham.jp",
            "Zip": 30988
        },
        {
            "index": 2,
            "index_start_at": 57,
            "integer": 5,
            "float": 13.8932,
            "Firstname": "Jeff",
            "surname": "Miles",
            "fullname": "Meredith Wall",
            "email": "herbert@green.af",
            "Zip": 47888
        },
        {
            "index": 3,
            "index_start_at": 58,
            "integer": 14,
            "float": 10.1125,
            "Firstname": "Mary",
            "surname": "Huff",
            "fullname": "George Schroeder",
            "email": "martha@waller.bo",
            "Zip": 3985
         }
    ]

}
如何从上面的jsonArray中获取密钥并将其存储在某个数组中,然后在java中随机分配这些密钥的值?? 编辑的代码

     import java.io.FileNotFoundException;
        import java.io.FileReader;
        import java.io.IOException;
        import java.util.Iterator;

        import org.json.JSONException;
        import org.json.JSONObject;
        import org.json.simple.JSONArray;
        import org.json.simple.parser.JSONParser;
        import org.json.simple.parser.ParseException;




        public class JSONReadFromFile {


            public static void main(String[] args) throws JSONException {

                JSONParser parser = new JSONParser();


                String jsonString=null;

                Object Obj;

                //JSONObject element;

                try {

                    Obj = parser.parse(new FileReader("jsonArray.json"));
                    System.out.println(Obj);
                    jsonString=Obj.toString();

                    JSONObject object = new JSONObject(jsonString); //jsonString = String from the file
                    org.json.JSONArray array = object.getJSONArray("items");
                    Iterator<Object> iterator = array.iterator();
                    while(iterator.hasNext()){
                        JSONObject jsonObject = (JSONObject) iterator.next();
                        for(String key : jsonObject.keySet()){
                            System.out.println(key + ":" + jsonObject.get(key));
                        }
                    }

        }

}
        catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (ParseException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        } 

    }
}
import java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.Iterator;
导入org.json.JSONException;
导入org.json.JSONObject;
导入org.json.simple.JSONArray;
导入org.json.simple.parser.JSONParser;
导入org.json.simple.parser.ParseException;
公共类JSONReadFromFile{
公共静态void main(字符串[]args)抛出JSONException{
JSONParser=新的JSONParser();
字符串jsonString=null;
对象对象对象;
//JSONObject元素;
试一试{
Obj=parser.parse(新文件读取器(“jsonArray.json”);
系统输出打印项次(Obj);
jsonString=Obj.toString();
JSONObject对象=新JSONObject(jsonString);//jsonString=文件中的字符串
org.json.JSONArray数组=object.getJSONArray(“项”);
迭代器迭代器=数组。迭代器();
while(iterator.hasNext()){
JSONObject JSONObject=(JSONObject)迭代器;
for(字符串键:jsonObject.keySet()){
System.out.println(key+”:“+jsonObject.get(key));
}
}
}
}
catch(filenotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE1异常){
//TODO自动生成的捕捉块
e1.printStackTrace();
}捕获(解析异常e2){
//TODO自动生成的捕捉块
e2.printStackTrace();
} 
}
}
我正试着这样做。。这是正确的做法吗??首先我读取json文件,然后从中提取密钥。
在上面的代码中,我得到了两个错误——类型jsonArray的方法迭代器未定义&&类型jsonArray的方法键集未定义

您可以使用两个循环来完成,例如:

JSONObject object = new JSONObject(jsonString); //jsonString = String from the file
JSONArray array = object.getJSONArray("items");
Iterator<Object> iterator = array.iterator();
while(iterator.hasNext()){
    JSONObject jsonObject = (JSONObject) iterator.next();
    for(String key : jsonObject.keySet()){
        System.out.println(key + ":" + jsonObject.get(key));
    }
}
JSONObject object=新的JSONObject(jsonString)//jsonString=文件中的字符串
JSONArray数组=object.getJSONArray(“items”);
迭代器迭代器=数组。迭代器();
while(iterator.hasNext()){
JSONObject JSONObject=(JSONObject)迭代器;
for(字符串键:jsonObject.keySet()){
System.out.println(key+”:“+jsonObject.get(key));
}
}
更新

以下是所有导入的完整示例:

import java.util.Iterator;
import org.json.JSONArray;
import org.json.JSONObject;

public class Test {

    public static void main(String[] args) {

        JSONObject object = new JSONObject("{\"items\":[{\"index\":10}]}");
        JSONArray array = object.getJSONArray("items");
        Iterator<Object> iterator = array.iterator();

        while (iterator.hasNext()) {
            JSONObject jsonObject = (JSONObject) iterator.next();

            for (String key : jsonObject.keySet()) {
                System.out.println(key + ":" + jsonObject.get(key));
            }
        }

    }
}
import java.util.Iterator;
导入org.json.JSONArray;
导入org.json.JSONObject;
公开课考试{
公共静态void main(字符串[]args){
JSONObject object=新的JSONObject(“{\'items\”:[{\'index\':10}]}”);
JSONArray数组=object.getJSONArray(“items”);
迭代器迭代器=数组。迭代器();
while(iterator.hasNext()){
JSONObject JSONObject=(JSONObject)迭代器;
for(字符串键:jsonObject.keySet()){
System.out.println(key+”:“+jsonObject.get(key));
}
}
}
}

预期的输出是什么?来自jsonArray的键以及相应的值。可能重复的否,它不符合我的要求,以及如何获取相应键的值,然后每次随机化键的值。
jsonObject.get(key)
将为您提供特定键的值。随机化取决于您希望随机化的内容/方式。我希望随机化值的范围为1到1000。您可以使用Java的
Random
方法随机化值,请查看SO答案以获取示例。我得到的错误是:类型JSONArray和方法keySet()的方法迭代器()未定义未为类型JSONObject定义。如何解决这些错误