簡體   English   中英

Firebase 數據庫錯誤:System.Collections.Generic.Dictionary`2[System.String,System.Object]

[英]Firebase Database Error: System.Collections.Generic.Dictionary`2[System.String,System.Object]

Firebase 數據庫在應用程序中的其他類似操作之間需要時下載數據失敗。

System.Collections.Generic.Dictionary`2[System.String,System.Object]

Firebase 在應用程序的類似操作中有時無法執行新的GetValueASync並拋出System.Collections.Generic.Dictionary 2[System.String,System.Object]` 作為快照值。

重現步驟:使用實時數據庫設置任何統一項目多次不間斷執行: .GetValueAsync().ContinueWithOnMainThread(task =>然后您將獲得System.Collections.Generic.Dictionary 2[System.String,System.Object] 的值` 而不是任何子/鍵/數據庫值。

public void aaaa() {
    Reference.Child("Users").OrderByChild("About/XP").StartAt(1).LimitToFirst(12).GetValueAsync().ContinueWithOnMainThread(task => {
      if (task.IsFaulted) {

        return;
      } else if (task.IsCompleted) {
        DataSnapshot Snapshot = task.Result;
        if (Snapshot != null)
          Debug.Log(Snapshot.Value);
        return;
      }
      return;

    });

好吧,如果您在字典上使用ToString (這是Debug.Log在內部執行的操作),或者通常任何未顯式實現它的類型的 object ,就會發生這種情況,它只返回與GetType().FullName相同的內容。

Object.ToString 方法的默認實現返回對象類型的完全限定名稱。

所以看起來類型是Dictionary<string, object>

如果您想查看所有您想做的項目,例如

foreach(var kvp in Snapshot.Value)
{
    Debug.Log($"Key: {kvp.Key}, Value: {kvp.Value}");
}

但請注意:雖然 key 是string ,但 value 可能再次是未實現ToString的類型,在這種情況下,它將再次簡單地打印出類型名稱。


如果您真的想打印出整個結構(只要值是可序列化的),您可以使用Newtonsoft JSON.Net並將整個字典轉換為人類可讀的 JSON 格式。

請參閱序列化字典

string json = JsonConvert.SerializeObject(Snapshot.Value, Formatting.Indented);
Debug.Log(json);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM