1
- org.json.simple
- org.json
我試圖獲取無論從字段名的值在ArchiveBatchChangeRequest - > DocumentSets - > QuerySpecification下,並將其作爲ArrayList返回。
- elementNode = 「ArchiveBatchChangeRequest; DocumentSets; QuerySpecification」
- objectValue = 「字段名」
- 批處理文件= JSON輸入文件
因此,返回值應該包含客戶名稱和dateCreated會因爲QuerySpecification是一個大小爲2的陣列
我似乎無法得到這個工作。恐怕我最初的遍歷點很糟糕,或者可以簡單得多。
的JSON輸入文件:
{
"ArchiveBatchChangeRequest": [{
"BatchRunSpecification": [{
"BatchOperation": "EXTRACT"
}]
},
{
"OutputSpecification": [{
"ReportFieldNames": ["ReportField1"]
}]
},
{
"DocumentSets": [{
"DocumentSetNo": "1",
"QuerySpecification": [{
"FieldName": "CustomerName",
"SimpleQuery": [{
"Operator": "EQUAL",
"Values": ["Customer1"]
}]
},
{
"FieldName": "DateCreated",
"SimpleQuery": [{
"Operator": "EQUAL",
"Values": ["19-12-2015"]
}]
}]
}]
}]
}
代碼:
public ArrayList<String> getElementValue(String elementNode, String objectValue, File batchFile) throws IOException, ParseException{
String [] elementArray = elementNode.split(";");
JSONObject outerObject = null;
ArrayList<String> values = new ArrayList<String>();
try {
JSONParser parser = new JSONParser();
Object object = parser.parse(new FileReader(batchFile));
outerObject = new JSONObject(object.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONArray getArray = null;
for (int i = 0; i < elementArray.length; i++) {
getArray = outerObject.getJSONArray(elementArray[i]);
for (int j = 0; j < getArray.length(); j++) {
for (int j2 = 0; j2 < elementArray.length; j2++) {
if(getArray.getJSONObject(j).names().get(0).equals(elementArray[j2])){
outerObject = getArray.getJSONObject(j);
}
}
}
if(i == elementArray.length - 1){
outerObject = getArray.getJSONObject(0);
}
}
try{
getArray = null;
getArray = outerObject.getJSONArray(objectValue);
}catch(JSONException je){ //Object is not an JSONArray
je.printStackTrace();
}finally{
if(getArray != null){
for (int i = 0; i < getArray.length(); i++) {
values.add(getArray.getString(i).replace("\"", ""));
}
}else
values.add(outerObject.getString(objectValue));
}
return values;
}