【问题标题】:How to access object data c# (Firebase)如何访问对象数据 c# (Firebase)
【发布时间】:2021-11-24 08:46:27
【问题描述】:

我从我的数据库(Firebase 数据库)中获取数据。这是一个包含多个数据的文档,包括一个带有 GeoPoint 字段的数组。

var documents = await CrossCloudFirestore.Current .Instance .Collection("Activity") .GetAsync();

我的对象在我的模型类中是这样定义的:public class Activity { public object elapsedTime { get; set; } public object positions { get; set; } ...... }

它有效。我可以在我的 Activity 类中获取数据。 但是,我想知道如何访问这些数据,因为 foreach 循环不适用于对象类型。也许我需要重新定义我的活动类? 谢谢 :=)

编辑: 你可以在这里看到我的火力基地:

然后是请求的结果:

【问题讨论】:

  • 如果您的数据是Array with GeoPoint fields,那么是的,在您的班级中将其定义为object 可能是不正确的
  • @Jason 那么对我来说最好的解决方案是什么?我在这一点上停留了 1 天......谢谢
  • 创建一个准确反映存储在 Firebase 中的 json 数据的 C# 类。您没有发布有关您的实际数据的任何详细信息,因此我无法提出任何具体的修复建议。
  • @jason 我的 questino 已更新
  • 有许多网站 - json2csharp.com 或 VS 自身会从 json 生成 C# 类。我建议您使用其中一种工具

标签: google-cloud-firestore xamarin.forms


【解决方案1】:

在您的场景中,每个对象的属性都是动态的,我建议您将根级别反序列化为dictionary,然后获取您想要的数据。

Items = JsonConvert.DeserializeObject<Dictionary<string, YourClass>>(content).Values.ToList()

哦,在此之前,Newtonsoft 插件是必需的。

参考

Deserialize JSON into readable format

【讨论】:

  • 所以我有点迷茫......我的内容是一个 IQuerySnapshot。所以我不能使用 DeserializeObject 吗?
  • 我猜你需要数据映射:github.com/f-miyu/Plugin.CloudFirestore#data-mapping,你可以将positions 设置为Array类型,这样就可以检索到了。
【解决方案2】:

有效! :)

为此,我在我的 C# 类中将 Array(来自 firestore)定义为 IEnumerable,从 firestore 到 c# 的名称相同。

然后,这是我的查询和转换对象的行。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
相关资源
最近更新 更多