首先json格式是这样的:
{
"error": 0,
"data": {
"totalItems": 1,
"items": [
{
"config": {
"cis-cat": {
"interval": "1d",
"timeout": "1800"
},
"rootcheck": {
"disabled": "no",
"frequency": "43200"
},
"vulnerability-detector": {
"disabled": "no",
"ignore_time": "6h",
"interval": "1m"
},
"syscollector": {
"disabled": "no",
"interval": "1h"
},
"syscheck": {
"ignore": [
"/etc/mtab"
],
"windows_registry": "HKEY_LOCAL_MACHINE/Software",
"directories": [
{
"path": "/wwww",
"check_all": "yes"
}
],
"disabled": "no",
"frequency": "43200",
"auto_ignore": {
"item": "no",
"frequency": "10",
"timeframe": "3600"
},
"registry_ignore": "HKEY_LOCAL_MACHINE/Software"
},
"open-scap": {
"disabled": "no",
"ignore_time": "6h",
"interval": "1d",
"timeout": "1800"
}
},
"filters": {}
}
]
}
}
java开始解析:
if ("0".equals(jsonObject.getString("error"))){
JSONObject object = jsonObject.getJSONObject("data");
int count = object.getIntValue("totalItems");
JSONArray items = object.getJSONArray("items");
JSONObject config = items.getJSONObject(0);
JSONObject configJSONObject = config.getJSONObject("config");
if (configJSONObject.size() > 0){
JSONObject syscheck = configJSONObject.getJSONObject("syscheck");
String windows_registry = syscheck.getString("windows_registry");
String registry_ignore = syscheck.getString("registry_ignore");
String sysfrequency = syscheck.getString("frequency");
String scan_time = syscheck.getString("scan_time");
String scan_day = syscheck.getString("scan_day");
log.info("scan_day--" + scan_day);
JSONObject auto_ignore = syscheck.getJSONObject("auto_ignore");
String auto_item = auto_ignore.getString("item");
JSONArray ignore = syscheck.getJSONArray("ignore");
String sysIgnore = "";
if (!PubFunc.isNull(ignore)) {
if (ignore.size() > 0) {
sysIgnore = (String) ignore.get(0);
}
}
JSONArray directories = syscheck.getJSONArray("directories");
String dirStr = "";
if (directories.size() > 0){
for (int i = 0; i < directories.size(); i++){
JSONObject jsonObject1 = directories.getJSONObject(i);
dirStr = dirStr + jsonObject1.getString("path") + ",";
}
dirStr = dirStr.substring(0, dirStr.length() - 1);
}
JSONObject rootcheck = configJSONObject.getJSONObject("rootcheck");
String rootFrequency = rootcheck.getString("frequency");
JSONObject openScap = configJSONObject.getJSONObject("open-scap");
String openInterval = openScap.getString("interval");
String openIgnore_time = openScap.getString("ignore_time");
String openTimeout = openScap.getString("timeout");
JSONObject vuln = configJSONObject.getJSONObject("vulnerability-detector");
String vulnInterval = vuln.getString("interval");
String vulnIgnoreTime = vuln.getString("ignore_time");
JSONObject ciscat = configJSONObject.getJSONObject("cis-cat");
String cisInterval = ciscat.getString("interval");
String ciscattime = ciscat.getString("timeout");
JSONObject syscollector = configJSONObject.getJSONObject("syscollector");
String syscollectInter = syscollector.getString("interval");
}else{
OssecConf confResult = new OssecConf();
confResult.setGroupName(ossecConf.getGroupName());
return confResult;
}
}
注:所有数据都在items下,并且items下的数据是一个数组,可以通过items.getJSONObject(0);这样获取,也可以通过items.get(0);获取 。但是通过get(0),获取以后就不可以把获取到的结果再当作json对象来读取操作了。而通过getJSONObject(0);这个方法获取还有可以继续把返回的结果当作json对象操作读取。