c# - 反序列化多个 JSON 变量时遇到问题
问题描述
我编写了以下代码,它确实反序列化和解析单个 JSON 变量,但是,它不适用于多个
API 检索到的 JSON 具有类似于以下的变量,但是,第一个分支具有始终更改的数字,例如 value_abc_######,其中 ###### 始终是不同的数字,所以我没有关于我得到这个输出的想法。
这是 API 调用返回的 JSON 结构:
{
"value_abc_154649": {
"Name": "",
"Address": "",
"Phone": "",
},
"value_abc_616447": {
"Name": "",
"Address": "",
"Phone": "",
},
"value_abc_912374": {
"Name": "",
"Address": "",
"Phone": ""
}
}
虽然这是我编写的代码,但如果 JSON 只有 1 个分支结果,它可以正常工作,但如果是倍数则不会
class getVariables
{
public string Name { get; set; }
}
class fetch
{
var client = new System.Net.WebClient();
string json = client.DownloadString(API_URL);
var result = JsonConvert.DeserializeObject<getVariables>(json);
Console.Write("\nName: " + result.Name); //this just print an empty value
/*I also tried this structure but the for loop doesn't work
for (result)
{
Console.Write("\nName: " + result.Name);
}*/
}
解决方案
你的类不代表你的 json 结构。尝试反序列化为Dictionary<string, getVariables>
:
var json = @"{
""value_abc_154649"": {
""Name"": """",
""Address"": """",
""Phone"": """",
},
""value_abc_616447"": {
""Name"": """",
""Address"": """",
""Phone"": """",
},
""value_abc_912374"": {
""Name"": """",
""Address"": """",
""Phone"": """"
}
}";
var result = JsonConvert.DeserializeObject<Dictionary<string, getVariables>>(json);
// foreach(var r in result.Values)
// {
// Console.Write("\nName: " + r.Name);
//}
// or to print with keys:
foreach(var kvp in result)
{
Console.WriteLine($"Key: {kvp.Key}, Name: {kvp.Value.Name}");
}
推荐阅读
- python - Python中一列的唯一连接值
- javascript - Material UI 的 CSSBaseline 打破反应提及
- jquery - jQuery 从同一个元素获取不同的值并将它们用作不同的类
- haskell - 映射然后在 Haskell 中过滤
- graphics - 在不同的队列族上重用相同的主机可见缓冲区
- javascript - 赛普拉斯如何关闭窗口打印对话框
- r - 如果今天的日期是周六、周日或周一,则将今天的日期设置为上周五,否则在 R 中设置为今天
- ios - HSL 流视频在 IOS 15 上经过一段时间后拉伸
- python - tkinter - wm_protocol 处理 WM_HELP 消息
- react-native - 传递 Props 来创建MaterialTopTabNavigator 屏幕组件