Как десериализовать поле карты в Unity из Firestore?

# #c# #unity3d #google-cloud-firestore

Вопрос:

Я успешно извлекаю свой документ Firestore, который выглядит примерно так: введите описание изображения здесь

Я создал myMap , обновив документ экземпляром этого класса:

 using System;
using Firebase.Firestore;

[FirestoreData]
public class MyData
{
    [FirestoreProperty("myBoolean")]
    public bool MyBoolean { get; set; }

    [FirestoreProperty("myNumber")]
    public int MyNumber { get; set; }

    [FirestoreProperty("myTimestamp")]
    public DateTime MyTimestamp { get; set; }
}
 

Как мне преобразовать myMap обратно в экземпляр MyMap после извлечения документа?

Я могу использовать myDocumentSnapshot.ConvertTo<MyMap>(); для преобразования всего документа, но я не знаю, как это сделать для карты в документе.

Я пытаюсь сделать что-то в этом роде, но ConvertTo в данном контексте это не работает:

 var myDocument = myDocumentSnapshot.ToDictionary();
var myMap = myDocument["myMap"].ConvertTo<MyMap>();
 

Как я могу десериализоваться MyMap после получения документа?

Ответ №1:

Вообще не эксперт, но, следуя документам, я думаю, вы бы использовали GetValue , например,

 var myMap = myDocument.GetValue<MyMap>("myMap");
 

или для того, чтобы не получить исключение TryGetValue , например,

 if(!myDocument.TryGetValue<MyMap>("myMap", out var myMap)
{
    Debug.LogError("Could not deserialize myMap!");
}