gpt4 book ai didi

java - 访问类型为 java.util.ArrayList 的 json 中的所有键

转载 作者:行者123 更新时间:2023-12-01 18:59:27 26 4
gpt4 key购买 nike

我编写了一个方法来告诉 JSON 的类型。代码:

jsonObject.getClass().getName();

它返回java.util.ArrayList []或者它可以是com.google.gson.internal.LinkedTreeMap { }

现在我想从类型为 ArrayList 的 json 中检索所有键。这里我想将输入作为 jsonobject 传递,其类型为 arrayList。

这是我正在使用的示例 JSON -

[{"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"name": "suni1",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
}}]

所以现在我想检索像小部件、样式、大小、文本、图像等键。就像外键和内键一样。

最佳答案

您可以使用 Jackson 库中的 ObjectMapperGson 来迭代您的键。

public static void main(String[] args) throws IOException{
String s = "YOUR_JSON_HERE";

ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> treeMap = mapper.readValue(s, List.class);
//for Gson
//Gson gson = new Gson();
//List<Map<String, Object>> treeMap = gson.fromJson(s, List.class);

List<String> keys = new ArrayList<>();
System.out.println(treeMap.stream().map( t -> findAllKeys(t,keys)).collect(Collectors.toList()));
}

private static List<String> findAllKeys(Map<String, Object> treeMap , List<String> keys) {
treeMap.forEach((key, value) -> {
if (value instanceof LinkedHashMap) {
Map<String, Object> map = (LinkedHashMap) value;
findAllKeys(map, keys);
}
keys.add(key);
});

return keys;
}

关于java - 访问类型为 java.util.ArrayList 的 json 中的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59649780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com