我需要获取JSON的密钥。我怎样才能做到这一点?
例如,
{
"empId":"123",
"emp_name":"asda",
"emp_address":"skdjahskdga"
}
在上面的代码中,我需要获取empId,emp_name和emp_address。
假设它是这样的数组,
{"products":[{
"empId":"123",
"emp_name":"asda",
"emp_address":"skdjahskdga"
},
{
"empId":"123",
"emp_name":"asda",
"emp_address":"skdjahskdga"
}]}
我需要获取products.empId,products.emp_name,products.emp_address。
如果还有一个级别,比如employees数组包含products数组,而产品包含empId,emp_name和emp_address,我需要获得employees.product1.empId,employees.product1.emp_name和employees.product1.emp_address,等等.. 请告诉我如何实现这一目标。
答案 0 :(得分:1)
您可以使用像GSon这样的库为您执行此操作。如果您创建一个包含所需字段的可序列化Product类,那么您只需要
json = {"products":[{
"empId":"123",...
Product[] videoArray = gson.fromJson(json, Product[].class);
答案 1 :(得分:0)
static Set<String> finalListOfKeys = new LinkedHashSet<String>();
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("Absolute Path of json file"));
JSONObject jsonObject = (JSONObject) obj;
Set<String> jsonKeys = jsonObject.keySet();
for (String key : jsonKeys) {
Object val = jsonObject.get(key);
if (val instanceof JSONArray) {
JSONArray array = (JSONArray) val;
jsonArray(array, key);
} else if (val instanceof JSONObject) {
JSONObject jsonOb = (JSONObject) val;
jsonObj(jsonOb, key);
} else {
finalListOfKeys.add(key);
System.out.println("Key is : " + key);
}
}
System.out.println("Final List : " + finalListOfKeys);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void jsonObj(JSONObject object, String key2) {
Set<String> innerKeys = object.keySet();
System.out.println("Inner Keys : " + innerKeys);
for (String key : innerKeys) {
System.out.println("Key : " + key);
Object val = object.get(key);
if (val instanceof JSONArray) {
JSONArray array = (JSONArray) val;
jsonArray(array, key2 + "->" + key);
} else if (val instanceof JSONObject) {
JSONObject jsonOb = (JSONObject) val;
jsonObj(jsonOb, key2 + "->" + key);
} else {
finalListOfKeys.add(key2 + "->" + key);
System.out.println("Key is : " + key2 + "->" + key);
}
}
}
public static void jsonArray(JSONArray array, String key) {
if (array.size() == 0) {
finalListOfKeys.add(key);
} else {
for (int i = 0; i < array.size(); i++) {
Object jObject = array.get(i);
if (jObject instanceof JSONObject) {
JSONObject job = (JSONObject) jObject;
System.out.println(job);
jsonObj(job, key);
}
}
}
}