У меня много проблем при попытке извлечь данные из базы данных Firebase и переместить эти данные в словарь Unity.
Так что я хотел бы сделать это, чтобы просто получить данные один раз изатем поместите все данные в словарь, проблема в том, что я не могу найти способ сделать это, если словарь является вложенным словарем.
Вот так выглядит моя база данных (упрощенно):
{"questions": {
"group1": {
"id_1": {
"Question": "question one",
"A": "answer1"
},
"id_2": {
"Question": "question two",
"A": "answer2"
}
}
}
}
Итак, в моем коде я делаю следующее:
public void RetrievePreguntesJson()
{
string group = "group1"
questions_ref.Child(group).GetValueAsync().ContinueWith(task => {
if (task.IsFaulted)
{
Debug.LogError("Error Getting Info from user database");
}
else if (task.IsCompleted)
{
DataSnapshot snapshot = task.Result;
myDictionary = snapshot.Value as Dictionary<string, object>;
dataReady();
}
});
}
Итак, проблема в том, что я не могу получить никакого значения.Я хотел бы сделать что-то вроде myDictionary["id_1"]["Question"]
и получить значение «вопрос один».Или myDictionary["id_1"].Question
и получите значение «вопрос один».
Я уже пробовал следующее: - Создайте вопросы класса, подобные этому:
public class Questions
{
public string id;
public string Question;
public string Answer;
public Questions(string id, string Question, string Answer)
{
this.id = id;
this.Question = Question;
this.Answer = Answer;
}
}
И используйте следующий код вместо "userInfoDictionary = snapshot.Value as Dictionary<string, object>;"
Использование:
Questions ClassObjectName = JsonUtility.FromJson<Questions>(snapshot.GetRawJsonValue());
Но это тоже не сработало.
Также пробовал:
"userInfoDictionary = snapshot.Value as Dictionary<string, Dictionary<string, object>>;"
Но это не будетработать либо.
Может кто-нибудь помочь мне, пожалуйста?
"РЕДАКТИРОВАТЬ"
Это мой JSON:
{"questions": {
"group1": {
"id_1": {
"Question": "question one",
"A": "answer1"
},
"id_2": {
"Question": "question two",
"A": "answer2"
}
}
}
}
И это объекты:
[System.Serializable]
public class Group1
{
public QuestionsId group1;
}
[System.Serializable]
public class QuestionsId
{
public Questions id;
}
[System.Serializable]
public class Questions
{
public string Question;
public string A;
}
Я десериализовываю Json с помощью:
Group1 ClassObjectName = JsonUtility.FromJson<Group1>(snapshot.GetRawJsonValue());
Я хотел бы получить результат, вызывающий такие значения: myDictionary["id_1"].Question
myDictionary["id_1"]["Question"]
Я сейчас использую объект и утилиту Json, но если есть возможность использовать словарь для единства, чтобы получить результат, который я хотел бы получить, то это тоже хорошо для меня.Например: "userInfoDictionary = snapshot.Value as Dictionary<string, object>;"
Кто-нибудь знает, как мне помочь, пожалуйста?