gpt4 book ai didi

c# - 反序列化来自 firebase 的响应

转载 作者:太空狗 更新时间:2023-10-29 22:32:07 25 4
gpt4 key购买 nike

我正在使用 C# 通过提供的 REST API 与 Firebase 交互。

当我向节点发送 GET 请求时,我会按预期获得子节点。

{
"49d360b0-b3a8-4240-bd69-1f91b07365fd" : {
"id" : "49d360b0-b3a8-4240-bd69-1f91b07365fd",
"name" : "Foo",
"value" : "Love me some foo"
},
"8b87b4df-9c04-480b-bb53-43e22059ccfa" : {
"id" : "8b87b4df-9c04-480b-bb53-43e22059ccfa",
"name" : "Bar",
"value" : "Yay, bar"
},
"966fe014-08c3-4f64-93a3-7bd8ed396177" : {
"id" : "966fe014-08c3-4f64-93a3-7bd8ed396177",
"name" : "Name",
"value" : "Text"
}
}

可以有任意数量的 child 。在我得到回复之前,我不知道有多少。我正在尝试将其反序列化为一个列表,尽管任何类型的 IEnumerable 都应该没问题,因为它可以轻松转换为列表。我的 Entry 类如下所示:

public class Entry
{
public string id { get; set; }

public string name { get; set; }

public string value { get; set; }
}

我如何进行反序列化?我一直在使用 Newtonsoft 处理我的大部分 JSON,我需要使用不同的库吗?

更新:在进行调用之前,JSON 中对象的名称也是未知的,因此涉及通过索引获取值的解决方案不会非常有用

最佳答案

给你(有点难看):

public class Item
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}

反序列化代码:

dynamic data = JsonConvert.DeserializeObject<dynamic>(jsonString);
var list = new List<Item>();
foreach (var itemDynamic in data)
{
list.Add(JsonConvert.DeserializeObject<Item>(((JProperty)itemDynamic).Value.ToString()));
}

我跳过了原始 json 中的 Guid Id - 你需要它们吗?我会更新我的答案。
编辑:
稍微短一点的 Linq 版本:

dynamic data = JsonConvert.DeserializeObject<dynamic>(jsonString);
var shorter = ((IDictionary<string, JToken>)data).Select(k =>
JsonConvert.DeserializeObject<Item>(k.Value.ToString())).ToList();

关于c# - 反序列化来自 firebase 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24940591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com