c# - 从 Firebase 反序列化 JSON
问题描述
我有一个来自 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 文件,所以如果可能的话,我想避免进行任何手动字符串操作来删除节点名称。
解决方案
你可以Dictionary
像这样反序列化它:
var items = JsonConvert.DeserializeObject<Dictionary<string, Card>>(json);
这样,您仍然可以像 a 一样对其进行迭代list
,它与 json 的格式匹配,并且您仍然拥有所有可用信息(即使您不需要键值)。
如果你真的想把它作为一个列表,你可以添加Select(x => x.Value).ToList()
来创建一个List<Card>
.
推荐阅读
- azure - Azure PIM PowerShell 脚本
- php - Laravel 授权策略使用微风仅显示用户创建的对象
- swift - 如何在 CGRect 中添加文本标签?
- node.js - 使用 express js 未定义用户名
- django - 如何在 Django 中为 UI 创建可重用组件
- linux - 具有特定扩展名的文件名的文件路径
- node.js - node.js 这里有什么问题..试图理清欢迎角色和欢迎消息
- java - ActiveMQ 代理无法在客户端崩溃后遵守最大交付尝试
- python - 经理不可用;'auth.User' 已在 django 中替换为 'User.User'
- javascript - 需要从 iframe 打开新窗口