gpt4 book ai didi

java - Firebase 处理嵌套数据

转载 作者:行者123 更新时间:2023-12-01 16:20:21 24 4
gpt4 key购买 nike

好吧,假设我有以下 FireBase 数据库结构。

{
"2143" :
{
"Henk" : 6,
"message" : 1
}
}

添加数据如下:

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("2143/message");//Testing code, would later be replaced with a session variable and a username variable.
myRef.setValue(1);//Again, mere testing code which sets the 'message' key to have value 1. The actual code is currently lacking as the program isn't entirely functional yet.

我现在想将玩家及其各自的分数放入 android studio 中的 android 应用程序的排行榜中。当我尝试使用以下代码将它们放入 HashMap 中时:

    String code = "2143"; //This is would be the SessionID, it's currently static for testing purposes.
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference(code);
HashMap<String, String> leaderboardMap = new HashMap<>();
...
myRef.orderByValue().addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
leaderboardMap.put(dataSnapshot.getKey(), dataSnapshot.getValue().toString());
}
}

我得到以下 HashMap

key: 2143, value:{Henk=6, message=1}

但是我期望以下结果:

key: Henk, value: 6
key: message, value: 1

我的代码中的错误在哪里,如何修复它?

最佳答案

您可以将json字符串转换为HashMap,然后使用这些值在leaderborad中显示。这是一个将json sring转换为map的函数。

public static HashMap<String,String> jsonToMap(String t) throws JSONException {

HashMap<String, String> map = new HashMap<String, String>();
JSONObject jObject = new JSONObject(t);
Iterator<?> keys = jObject.keys();

while( keys.hasNext() ){
String key = (String)keys.next();
String value = jObject.getString(key);
map.put(key, value);

}
return map;
}

关于java - Firebase 处理嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62300850/

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