gpt4 book ai didi

java - 如何从 Firestore 获取数组内的映射值?

转载 作者:行者123 更新时间:2023-12-02 08:40:55 25 4
gpt4 key购买 nike

enter image description here

我将上述数据结构存储在 Cloud Firestore 中。我想保存舰队,它是存储在 Firestore 中的带有“id”和“name”的 map 数组。我很难获取数据并将其存储为数组。我只能得到一个奇怪的字符串,但有什么方法可以存储为字符串数组吗?下面是我使用的代码。

public void getFleets() {

DocumentReference document = mDb
.collection(FirestoreService.CLIENT_COLLECTION)
.document(new SessionService(getApplicationContext()).getClientUID());

document.get()
.addOnCompleteListener(task -> {
if (task.isSuccessful() && task.getResult() != null) {
DocumentSnapshot doc = task.getResult();
List<String> group = (List<String>) doc.get("fleets");
Log.i(TAG, "getFleets: " + group);

} else
Log.d(TAG, "Error getting documents: ", task.getException());
});
}

这是数组结果:

[{name=Caminhão, id=1}, {name=Escavadeira, id=2}, {name=Carregadeira, id=3}, {name=Trator, id=4}]

最佳答案

正如你所说,你的fleets字段是 map 数组。您在调试输出中看到的正是我所期望的。注意,外面的方括号表示java List类型对象,里面的大括号表示里面的java Map类型对象。但是,您的通用类型是错误的。而不是List<String> ,你应该使用List<Map<String, Object>>考虑列表中的 map 对象。

如果你想要 List<String>相反,您将必须编写一些代码来从 Map 中提取所需的字符串,并使用该值构建一个新的 List。所以,如果你想要 name每个 map 项的属性,您可以执行以下操作:

List<Map<String, Object>> groups = (List<Map<String, Object>>) doc.get("fleets");
ArrayList<String> names = new ArrayList<>();
for (Map<String, Object> group : groups) {
String name = group.get("name");
names.add(name);
}

现在您已获得列表中 map 中的名称列表。

关于java - 如何从 Firestore 获取数组内的映射值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61395705/

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