如何通过JSON将数据从Firebase检索到Unity3d?
我希望我能把我的问题说得尽可能清楚。 基本上 我的FirebaseDatabase中保存了数百个项目的列表 我将数据转换为JSON 现在我想使用JSON并将所有数据应用到unity场景中的不同项目中 我已经尝试读取firebase子部分中的所有节点/项,并且我还声明了“foreach”方法来处理它所面对的每个子部分。但是,当我想在“foreach”方法中调用另一个类或函数时,它不起作用,我不知道为什么它不起作用 我真的很感激任何帮助或想法来实现它。 如果可能的话,我希望创建一个“foreach”方法,并以不同的方式处理每个项,因为键不同,JSON中每个项的值也不同如何通过JSON将数据从Firebase检索到Unity3d?,unity3d,firebase-realtime-database,Unity3d,Firebase Realtime Database,我希望我能把我的问题说得尽可能清楚。 基本上 我的FirebaseDatabase中保存了数百个项目的列表 我将数据转换为JSON 现在我想使用JSON并将所有数据应用到unity场景中的不同项目中 我已经尝试读取firebase子部分中的所有节点/项,并且我还声明了“foreach”方法来处理它所面对的每个子部分。但是,当我想在“foreach”方法中调用另一个类或函数时,它不起作用,我不知道为什么它不起作用 我真的很感激任何帮助或想法来实现它。 如果可能的话,我希望创建一个“foreach”
Player.Child(UserId).Child("User_Inventory").Child("Items").GetValueAsync().ContinueWith(task => {
if (task.IsFaulted)
{
// Handle the error...
Debug.LogError("Could not finish (LoadPlayerData) !!");
}
else if (task.IsCompleted)
{
DataSnapshot snapshot = task.Result;
// here is the data for all the items that I have
string JSON = snapshot.GetRawJsonValue();
// Now How can I deal with each key/item present in the JSON?
```
[更新]
您可以直接迭代快照的子对象,而不是将firebase数据转换为RawJson并尝试迭代JSON对象。您可以以相同的方式遍历子对象的子对象
if(task.IsCompleted)
{
DataSnapshot snapshot = task.Result;
foreach (DataSnapshot child in snapshot.Children)
{
string key = child.Key;
string value = child.Value;
//Process child here.
}
}
更新:
试着让你的孩子更容易管理
Dictionary<string, object> dict = new Dictionary<string, object>();
foreach (DataSnapshot child in snapshot.Children)
{
dict.Add(child.Key, child.Value);
}
//dict now contains all of your json children as a dictionary reference.
您可以直接迭代快照的子对象,而不是将firebase数据转换为RawJson并尝试迭代JSON对象。您可以以相同的方式遍历子对象的子对象
if(task.IsCompleted)
{
DataSnapshot snapshot = task.Result;
foreach (DataSnapshot child in snapshot.Children)
{
string key = child.Key;
string value = child.Value;
//Process child here.
}
}
更新:
试着让你的孩子更容易管理
Dictionary<string, object> dict = new Dictionary<string, object>();
foreach (DataSnapshot child in snapshot.Children)
{
dict.Add(child.Key, child.Value);
}
//dict now contains all of your json children as a dictionary reference.
你好,谢谢Erik的回复。我已经这样做了,并且毫无问题地获得了子键和值,但是如果我尝试将子键和值传递给另一个类,则不会发生这种情况!如果我们试图以字符串形式获取'child.value',它会给出一个错误,因为'value'被认为是一个对象。[无法将类型“object”隐式转换为“string]抱歉,我在这里的帖子假设您正在分析底层节点。如果您的子节点不是底层节点,则需要将其解析为JSON对象或字典来读取。实际上,我正在尝试获取底层节点,但我遇到了我提到的那些问题,我无法传递数据。我认为在像“foreach”这样的迭代器中,我们不能调用另一个函数?!假设我有一个子项,其值为integer,我将把每个子项实例化为一个预置项或我的unity中的任何东西,并获取该项的键和值,为此我使用迭代器。这是我的任务,我只需要努力获取物品的int值。我还尝试了int myValue=int Child.value;还是什么都没发生!你好,谢谢Erik的回复。我已经这样做了,并且毫无问题地获得了子键和值,但是如果我尝试将子键和值传递给另一个类,则不会发生这种情况!如果我们试图以字符串形式获取'child.value',它会给出一个错误,因为'value'被认为是一个对象。[无法将类型“object”隐式转换为“string]抱歉,我在这里的帖子假设您正在分析底层节点。如果您的子节点不是底层节点,则需要将其解析为JSON对象或字典来读取。实际上,我正在尝试获取底层节点,但我遇到了我提到的那些问题,我无法传递数据。我认为在像“foreach”这样的迭代器中,我们不能调用另一个函数?!假设我有一个子项,其值为integer,我将把每个子项实例化为一个预置项或我的unity中的任何东西,并获取该项的键和值,为此我使用迭代器。这是我的任务,我只需要努力获取物品的int值。我还尝试了int myValue=int Child.value;还是什么都没发生!