gpt4 book ai didi

Java,从具有 FireStore 数据的 Map 获取键

转载 作者:行者123 更新时间:2023-12-02 01:36:28 30 4
gpt4 key购买 nike

我正在将 FireStore 中的数据获取到 map 中,Firestore 中的数据如下所示:

(Auto-Document ID)
title="title1"
body="body1"
(Auto-Document ID)
title="title2"
body="body2"

当我将它们加载到 map 中时,它将如下所示:

loadNoteCallBack: {rsmw3EkfIjUQxrzRiyy7={body=body2, title=title2}, sTEfYCcPK9lw77xWS8H5={body=body1, title=title1}}

“rsmw3EkfIjUQxrzRiyy7”和“sTEfYCcPK9lw77xWS8H5”是自动生成的文档 ID-s

现在我的问题是,我想从中提取标题,但我不知道如何操作。
我试过这个:

List<String> keys = new ArrayList<>();

for (String key : data.keySet()) {
keys.add(key);
}

但是我通过这种方式取回了文档 ID。

titles: [rsmw3EkfIjUQxrzRiyy7, sTEfYCcPK9lw77xWS8H5]

我应该如何获得标题?

更新

我想我做到了。这个问题有好的解决办法吗?

    public static void loadNote() {
db.collection("Datas")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
Map<String, Object> data = new HashMap<>();
List<String> titles = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
titles.add(document.getString("title"));
data.put(document.getId(),document.getData());
}
defaultEntitys.loadNoteCb(data,titles);
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});

最佳答案

更新

选项 1:

如果直接使用 Firestore 查询引用,请使用 QueryDocumentSnapshot 类方法从 Firestore 文档获取值

导入

import com.google.cloud.firestore.FirestoreOptions;
import com.google.cloud.firestore.QueryDocumentSnapshot;
import com.google.cloud.firestore.QuerySnapshot;

代码

  Firestore db = firestoreOptions.getService();
ApiFuture<QuerySnapshot> query = db.collection("data").get();
QuerySnapshot querySnapshot = query.get();
List<QueryDocumentSnapshot> documents = querySnapshot.getDocuments();
ArrayList<String> titles = new ArrayList<>();
for (QueryDocumentSnapshot document : documents) {
System.out.println("auto id: " + document.getId());
String title = document.getString("title");
titles.add(title);
}
System.out.println("titles = " + titles);

选项 2:

使用data.entrySet()获取键值对,如下所示

for (Map.Entry<String, Object> o : data.entrySet()) {
String key = o.getKey();
Object value = o.getValue();
}

使用任何 JSON 库(例如 Jackson)将值解析为 JSON 对象或类对象来获取标题。

关于Java,从具有 FireStore 数据的 Map 获取键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55197420/

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