Java 如何从JSON数组中获取密钥?
//外部jsonArray文件Java 如何从JSON数组中获取密钥?,java,Java,//外部jsonArray文件 { "items": [ { "index": 10, "index_start_at": 56, "integer": 12, "float": 16.8248, "Firstname": "Natalie", "surname": "MacDonald", "fulln
{
"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定义。如何解决这些错误