⑴ 求java合並json數據的代碼
我想了一下,但是得有一個前提,就是第一個json數組的size必須和第二個json數組的size相同,並且一一對應,否則將造成數組溢出。
如果是基於上面這個前提,那麼實現的方法就簡單了。
操作json對象,其實標準的方法是將實體類轉換成json後再操作,我這里的話為了便捷直接使用谷歌的Gson來創建JsonObject了,其他的json依賴還有阿里巴巴的FastJson等等,看你平時用什麼習慣。
引入Gson依賴:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
實現代碼:
public class Main {
public static void main(String[] args) {
JsonArray jsonArray1 = new JsonArray();
JsonObject json11 = new JsonObject();
json11.addProperty("數據1", "0000");
json11.addProperty("數據2", "1111");
JsonObject json12 = new JsonObject();
json12.addProperty("數據1", "0000");
json12.addProperty("數據2", "1111");
JsonObject json13 = new JsonObject();
json13.addProperty("數據1", "0000");
json13.addProperty("數據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("數據3", "6666");
JsonObject json22 = new JsonObject();
json22.addProperty("數據3", "6666");
JsonObject json23 = new JsonObject();
json23.addProperty("數據3", "6666");
jsonArray2.add(json21);
jsonArray2.add(json22);
jsonArray2.add(json23);
System.out.println(jsonArray2);
//遍歷json數組,按位取出對象
for (int i = 0; i < jsonArray1.size(); i++) {
JsonObject json1 = jsonArray1.get(i).getAsJsonObject();
JsonObject json3 = jsonArray2.get(i).getAsJsonObject();
//遍歷數據3內容,通過Entry獲取數據3的key和value,並合並到數據1中
for (Map.Entry<String, JsonElement> item : json3.entrySet()) {
json1.addProperty(item.getKey(), item.getValue().getAsString());
}
}
System.out.println(jsonArray1);
}
}
整體思路為:遍歷兩個json數組,按位進行合並操作。合並時,遍歷數據3的jsonObject,獲取其key和value,並將其合並到數據1中即可。
運行結果:
⑵ java foreach是否能對jsonarray進行遍歷
應該是可以的
1.我用的jar包是com.alibaba.fastjson是這個
2.代碼片段
1
2
3
4
5
JSONArray arrays = JSONObject.parseArray("集合json");
for(Object obj:arrays){
JSONObject o = (JSONObject) obj;
String value = o.getString("JSONArray每個元素中,你需要的那個key");
}
⑶ java中怎麼遍歷jsonarray
String json =
"[" +
" {" +
" \"resultcode\": \"200\"" +
" }," +
" {" +
" \"resultcode\": \"201\"" +
" }" +
"]";
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(json);
JsonArray ja=je.getAsJsonArray();
for (JsonElement jsonElement : ja) {
System.out.println(jsonElement.getAsJsonObject().get("resultcode").getAsString());
}
⑷ java的JSONArray如何使用
從json數組中得到相應java數組,如果要獲取java數組中的元素,只需要遍歷該數組。
數組內容如下:
/**
* 從json數組中得到相應java數組
* JSONArray下的toArray()方法的使用
* @param str
* @return
*/
public static Object[] getJsonToArray(String str) {JSONArray jsonArray = JSONArray.fromObject(str);
return jsonArray.toArray(); }
3.從json數組中得到java數組,可以對該數組進行轉化,如將JSONArray轉化為String型、Long型、Double型、Integer型、Date型等等。
4.分別採用jsonArray下的getString(index)、getLong(index)、getDouble(index)、getInt(index)等方法。
5.同樣,如果要獲取java數組中的元素,只需要遍歷該數組。
⑸ java後台的json值怎麼傳給jsp頁面,並進行遍歷
首先看你的後台是用的什麼。
1、servlet,把json放在request(session)對象里,然後返回,jsp在request里取。
2、框架,放在form表單里帶回去,jsp頁面用標簽直接調用。
遍歷的方式很多,《% %》的方式 或者《C:BEAN》等方式都可以
滿意請採納。
⑹ java如何遍歷json 請具體點
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"));
}
⑺ java的JSONArray怎麼用比如有一個JSONArray是 [{..."a":123, "
從json數組中得到相應java數組,如果要獲取java數組中的元素,只需要遍歷該數組。
數組內容如下:
/**
* 從json數組中得到相應java數組
* JSONArray下的toArray()方法的使用
* @param str
* @return
*/
public static Object[] getJsonToArray(String str) {JSONArray jsonArray = JSONArray.fromObject(str);
return jsonArray.toArray(); }
3.從json數組中得到java數組,可以對該數組進行轉化,如將JSONArray轉化為String型、Long型、Double型、Integer型、Date型等等。
4.分別採用jsonArray下的getString(index)、getLong(index)、getDouble(index)、getInt(index)等方法。
5.同樣,如果要獲取java數組中的元素,只需要遍歷該數組。
⑻ java foreach是否能對jsonarray進行遍歷
應該是可以的
1.我用的jar包是com.alibaba.fastjson是這個
2.代碼片段
1
2
3
4
5
JSONArray
arrays
=
JSONObject.parseArray("集合json");
for(Object
obj:arrays){
JSONObject
o
=
(JSONObject)
obj;
String
value
=
o.getString("JSONArray每個元素中,你需要的那個key");
}
⑼ java中把json怎麼轉換成數組
使用原生的解析:
String json = "...";
//遍歷數組里的值,得到每個獨立的對象,然後獲取對應的值設置到聲明好的對象中,最終創建對象完成後添加到集合中,如我自己代碼里的片段:
for (int j = 0; j < array.length(); j++) {
obj = array.getJSONObject(j);
Data data = new Data();
mDataList.add(data);
}
數組聲明
在數組的聲明格式里,「數據類型」是聲明數組元素的數據類型,可以是java語言中任意的數據類型,包括簡單類型和結構類型。「數組名」是用來統一這些相同數據類型的名稱,其命名規則和變數的命名規則相同。
數組聲明之後,接下來便是要分配數組所需要的內存,這時必須用運算符new,其中「個數」是告訴編譯器,所聲明的數組要存放多少個元素,所以new運算符是通知編譯器根據括弧里的個數,在內存中分配一塊空間供該數組使用。利用new運算符為數組元素分配內存空間的方式稱為動態分配方式。
以上內容參考:網路-數組
⑽ Java實現JSON多層遍歷
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);
}