java遍歷json的話,你可以選擇gson或者阿里巴巴的fastjson,這兩個解析json的話是非常方便的,可以轉(zhuǎn)換成java對象。
創(chuàng)新互聯(lián)基于分布式IDC數(shù)據(jù)中心構(gòu)建的平臺為眾多戶提供珉田數(shù)據(jù)中心 四川大帶寬租用 成都機柜租用 成都服務器租用。
我想了一下,但是得有一個前提,就是第一個json數(shù)組的size必須和第二個json數(shù)組的size相同,并且一一對應,否則將造成數(shù)組溢出。
如果是基于上面這個前提,那么實現(xiàn)的方法就簡單了。
操作json對象,其實標準的方法是將實體類轉(zhuǎn)換成json后再操作,我這里的話為了便捷直接使用谷歌的Gson來創(chuàng)建JsonObject了,其他的json依賴還有阿里巴巴的FastJson等等,看你平時用什么習慣。
引入Gson依賴:
dependency
groupIdcom.google.code.gson/groupId
artifactIdgson/artifactId
version2.8.0/version
/dependency
實現(xiàn)代碼:
public class Main {
public static void main(String[] args) {
JsonArray jsonArray1 = new JsonArray();
JsonObject json11 = new JsonObject();
json11.addProperty("數(shù)據(jù)1", "0000");
json11.addProperty("數(shù)據(jù)2", "1111");
JsonObject json12 = new JsonObject();
json12.addProperty("數(shù)據(jù)1", "0000");
json12.addProperty("數(shù)據(jù)2", "1111");
JsonObject json13 = new JsonObject();
json13.addProperty("數(shù)據(jù)1", "0000");
json13.addProperty("數(shù)據(jù)2", "1111");
jsonArray1.add(json11);
jsonArray1.add(json12);
jsonArray1.add(json13);
System.out.println(jsonArray1);
JsonArray jsonArray2 = new JsonArray();
JsonObject json21 = new JsonObject();
json21.addProperty("數(shù)據(jù)3", "6666");
JsonObject json22 = new JsonObject();
json22.addProperty("數(shù)據(jù)3", "6666");
JsonObject json23 = new JsonObject();
json23.addProperty("數(shù)據(jù)3", "6666");
jsonArray2.add(json21);
jsonArray2.add(json22);
jsonArray2.add(json23);
System.out.println(jsonArray2);
//遍歷json數(shù)組,按位取出對象
for (int i = 0; i jsonArray1.size(); i++) {
JsonObject json1 = jsonArray1.get(i).getAsJsonObject();
JsonObject json3 = jsonArray2.get(i).getAsJsonObject();
//遍歷數(shù)據(jù)3內(nèi)容,通過Entry獲取數(shù)據(jù)3的key和value,并合并到數(shù)據(jù)1中
for (Map.EntryString, JsonElement item : json3.entrySet()) {
json1.addProperty(item.getKey(), item.getValue().getAsString());
}
}
System.out.println(jsonArray1);
}
}
整體思路為:遍歷兩個json數(shù)組,按位進行合并操作。合并時,遍歷數(shù)據(jù)3的jsonObject,獲取其key和value,并將其合并到數(shù)據(jù)1中即可。
運行結(jié)果:
步驟一:導入jar
json-lib-2.2.2-jdk15.jar
json-lib依賴包:commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar? ezmorph.jar?
步驟二:建對應的實體類
public class??Region(){
String?category;
String?cityName;
String?siteName;
String?total;
//省略get/set
}
步驟三:遍歷
public class Test {
//將json字符串轉(zhuǎn)List
public?static?ListRegion?converListFormJson(String json){ ?
if?(json==?null?||?json.equals("")) ?{
? ? ? ?return?new?ArrayList();
? ?}
JSONArray?jsonArray?=?JSONArray.fromObject(json);
ListRegion?list?=?(List)?JSONArray.toCollection(jsonArray, Region.class);
return?list;
}
public static void main(String args[]){
?ListRegion ?list = ?converListFormJson();
for(Region region : list?){ ? //遍歷所有的
System.out.println("...............業(yè)務............");
}
}
}
JSONObject jsonObject = new JSONObject(jsonString);
JSONArray jsonArray =jsonObject.getJSONArray(“info”);
for (int i = 0; i jsonArray.length(); i++) {
JSONObject jo = jsonArray.getJSONObject(i);
System.out.println(jo.getString("goodsld"));
System.out.println(jo.getString("goodsq"));
}
JSONObject jsonObject = new JSONObject(s);
然后用Iterator迭代器遍歷取值,建議用反射機制解析到封裝好的對象中
JSONObject jsonObject = new JSONObject(jsonString);
Iterator iterator = jsonObject.keys();while(iterator.hasNext()){
key = (String) iterator.next();
value = jsonObject.getString(key);
}