我正在嘗試將 JSON 對(duì)象轉(zhuǎn)換為 POJO,理想情況下我會(huì)collection在我的cluster對(duì)象中有一個(gè)(的)對(duì)象列表。然而,JSON 模式不使用列表,它使用collection名稱(chēng)的映射,該映射未知且可能會(huì)更改。有沒(méi)有辦法使用 GSON 將其轉(zhuǎn)換為 POJO 列表?有問(wèn)題的 JSON:{ "responseHeader":{ "status":0, "QTime":333}, "cluster":{ "collections":{ "collection1":{ "shards":{ "shard1":{ "range":"80000000-ffffffff", "state":"active", "replicas":{ "core_node1":{ "state":"active", "core":"collection1", "node_name":"127.0.1.1:8983_solr", "base_url":"http://127.0.1.1:8983/solr", "leader":"true"}, "core_node3":{ "state":"active", "core":"collection1", "node_name":"127.0.1.1:8900_solr", "base_url":"http://127.0.1.1:8900/solr"}}}, "shard2":{ "range":"0-7fffffff", "state":"active", "replicas":{ "core_node2":{ "state":"active", "core":"collection1", "node_name":"127.0.1.1:7574_solr", "base_url":"http://127.0.1.1:7574/solr", "leader":"true"}, "core_node4":{ "state":"active", "core":"collection1", "node_name":"127.0.1.1:7500_solr", "base_url":"http://127.0.1.1:7500/solr"}}}}, "maxShardsPerNode":"1", "router":{"name":"compositeId"}, "replicationFactor":"1", "znodeVersion": 11, "autoCreated":"true", "configName" : "my_config", "aliases":["both_collections"] } }, "aliases":{ "both_collections":"collection1,collection2" }, "roles":{ "overseer":[ "127.0.1.1:8983_solr", "127.0.1.1:7574_solr"] }, "live_nodes":[ "127.0.1.1:7574_solr", "127.0.1.1:7500_solr", "127.0.1.1:8983_solr", "127.0.1.1:8900_solr"] }}
2 回答

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用 TypeAdapter 將您的對(duì)象轉(zhuǎn)換為對(duì)象列表,或者只是將所有對(duì)象cluster放入 aJsonArray然后將其解析為 a List<Collection>,如下所示:
JsonArray jsonArr = new JsonArray();
JsonObject fullObj = new GsonBuilder().create().fromJson(jsonStr, JsonObject.class);
fullObj.getAsJsonObject("cluster")
.entrySet()
.forEach(col -> jsonArr.add(col.getValue()));
List<Collection> collections = gson.fromJson(jsonArr.toString(), Collection.class);
添加回答
舉報(bào)
0/150
提交
取消