【问题标题】:Deserialize JSON from Firebase从 Firebase 反序列化 JSON
【发布时间】:2019-09-04 09:22:12
【问题描述】:

我有一个来自 firebase 的 JSON 文件,其中包含一个具有自己唯一名称的节点列表,如果可能的话,我想像使用 Newtonsoft.Json 的普通 JSON 数组一样将所有内容反序列化为一个列表,如下所示:

using (StreamReader r = new StreamReader(filePath))
{
    string json = r.ReadToEnd();
    Console.WriteLine(json);
    List<Card> items = JsonConvert.DeserializeObject<List<Card>>(json);
} 

但是由于 Firebase 的这种 JSON 格式,每个节点都有一个唯一的名称,有没有办法像普通的 JSON 数组一样反序列化它们,而无需使用 Newtonsoft.Json 编辑 JSON 的格式?

我可以放心地忽略节点名称,因为我只需要每个对象的内容并将它们放在一个列表中。

{
  "131F78DB" : {
    "IDNumber" : "5526F",
    "Name" : "NAME1"
  },
  "19505EAD" : {
    "IDNumber" : "5132F",
    "Name" : "TEMPORARYHR10103"
  },
  "19539B6D" : {
    "IDNumber" : "10102",
    "Name" : "TEMPORARYHR10102"
  }
}

我将使用像这样的大型 JSON 文件,因此如果可能的话,我希望避免进行任何手动字符串操作来删除节点名称。

【问题讨论】:

    标签: c# json firebase


    【解决方案1】:

    您可以像这样将其反序列化为Dictionary

    var items = JsonConvert.DeserializeObject<Dictionary<string, Card>>(json);
    

    这样您仍然可以像 list 一样对其进行迭代,它与 json 的格式匹配,并且您仍然拥有所有可用信息(即使您不需要键值)。

    如果你真的想把它作为一个列表,你可以添加Select(x =&gt; x.Value).ToList() 来创建一个List&lt;Card&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      相关资源
      最近更新 更多