============================
============================
[{"keywordFile":"南邮","keyword":[{"content":"教授"},{"content":"特聘"}]},{"keywordFile":"真的","keyword":[{"content":"如果"},{"content":"确定"}]}]
这是一条奇怪的json,我们想要分拣出来干净的kv对,那么现在把这整个json字符串看成一个JSONArray,里面有两条JSONObject
第一条
{"keywordFile":"南邮","keyword":[{"content":"教授"},{"content":"特聘"}]}
第二条
{"keywordFile":"真的","keyword":[{"content":"如果"},{"content":"确定"}]}
而这条 JSONObject都一样,除了一个明显的kv对("keywordFile":"南邮")外,还有一个一个JSONArray,这个JSONArray里也是有两条JSONObject
那么我们的思路就很明显,遍历分拣。
具体这样实现
首先导入一个json的jar包
net.sf.json-lib
json-lib
2.4
jdk15
下面先把字符串通过 JSONArray.fromObject转换为JSONArray,
遍历大JSONArray分拣出JSONObject,取出简单的kv对keywordFile,
再把复杂的keyword也转换成JSONArray,然后对小JSONArray进行遍历分拣。
简单来说就是
JSONArray(大)=>JSONObject(大),
若JSONObject(大)是JSONArray(小),
则JSONObject(大)=>JSONArray(小),
再JSONArray(小)=>JSONObject(小)
String keywords="[{\"keywordFile\":\"南邮\",\"keyword\":[{\"content\":\"教授\"},{\"content\":\"特聘\"}]}, {\"keywordFile\":\"真的\",\"keyword\":[{\"content\":\"如果\"},{\"content\":\"确定\"}]}]";
JSONArray json = JSONArray.fromObject(keywords);
if (json.size()>0) {
System.out.println("开始分拣");
for (int i= 0; i< json.size(); i++) {
JSONObject job = json.getJSONObject(i);
String keywordFile = (String) job.get("keywordFile");
System.out.println(keywordFile + "============================");
JSONArray jsonArray = (JSONArray) job.get("keyword");
if (jsonArray.size() > 0) {
System.out.println("开始插入检索词");
for (int j= 0; j < jsonArray.size(); j++) {
JSONObject jsonObject = jsonArray.getJSONObject(j);
System.out.println(jsonObject.get("content"));
}
}
}}