com.google.gson.JsonArray用里面元素的id为key元素JsonObject为value且要记下每个元素本来的位置,用java集合实现:
可以使用LinkedHashMap来实现这个需求。
LinkedHashMap是基于哈希表实现的Map,但是同时维护一个插入顺序链表,可以保证元素的顺序与插入的顺序一致。
同时,将每个元素的位置作为value存储在JsonObject中,可以轻松获得每个元素本来的位置。
具体实现可以参考下面的代码:
1 import com.google.gson.JsonArray; 2 import com.google.gson.JsonElement; 3 import com.google.gson.JsonObject; 4 import java.util.LinkedHashMap; 5 6 public class JsonArrayExample { 7 public static void main(String[] args) { 8 JsonArray jsonArray = new JsonArray(); 9 10 // 添加元素到JsonArray 11 jsonArray.add(createJsonObject("id1", "value1")); 12 jsonArray.add(createJsonObject("id2", "value2")); 13 jsonArray.add(createJsonObject("id3", "value3")); 14 15 // 使用LinkedHashMap保存元素的位置和对应的JsonObject 16 LinkedHashMap<String, JsonObject> linkedHashMap = new LinkedHashMap<>(); 17 18 for (int i = 0; i < jsonArray.size(); i++) { 19 JsonElement jsonElement = jsonArray.get(i); 20 if (jsonElement.isJsonObject()) { 21 JsonObject jsonObject = jsonElement.getAsJsonObject(); 22 String id = jsonObject.get("id").getAsString(); 23 linkedHashMap.put(id, jsonObject); 24 } 25 } 26 27 // 遍历LinkedHashMap并打印结果 28 for (String id : linkedHashMap.keySet()) { 29 JsonObject jsonObject = linkedHashMap.get(id); 30 System.out.println("ID: " + id); 31 System.out.println("Value: " + jsonObject.get("value").getAsString()); 32 System.out.println("Original Position: " + jsonArray.indexOf(jsonObject)); 33 System.out.println(); 34 } 35 } 36 37 private static JsonObject createJsonObject(String id, String value) { 38 JsonObject jsonObject = new JsonObject(); 39 jsonObject.addProperty("id", id); 40 jsonObject.addProperty("value", value); 41 return jsonObject; 42 } 43 }
标签:jsonArray,jsonObject,value,JsonObject,id,LinkedHashMap From: https://www.cnblogs.com/SuperGuoYa/p/17416548.html