![](/img/trans.png)
[英]Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type '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.