c# - 如何将类似对象的json对象反序列化为c#列表
问题描述
我有这样的json响应:
{
"val1":{
"id":"1",
"value":"val"
},
"val2":{
"id":"2",
"value":"otherVal"
}
}
我如何将此有效负载反序列化为 SimplyObject 所在的 SimplyObject 通用列表
public class SimpleObject {
public int Id {get;set;}
public string Value {get;set;}
}
当我尝试将此有效负载反序列化为 SimpleObject 列表时,出现以下错误:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.List`1[SimpleObject]”,因为该类型需要 JSON 数组(例如 [1,2,3] ) 以正确反序列化。要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型,使其成为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。
解决方案
您可以使用 反序列化 JSON Dictionary
,例如:
var result = JsonConvert.DeserializeObject<Dictionary<string, SimpleObject>>(json);
并像这样使用它,例如:
foreach (var item in result)
{
Console.WriteLine($"Item: {item.Key} has Id of {item.Value.Id} and value of {item.Value.Value}");
}
推荐阅读
- android - 如何使解析后的颜色变浅?
- python - 如何在 Python 中解析非英语混合文本
- sql - 如何从 SQL Server 的几行中获取值最小的列的名称?
- c++ - 静态库缺少 `__imp_` 符号
- embedded-linux - PCIe PIC_INTERRUPT_PIN (0x3c) 为 0
- image - 是否可以通过对具有各种不同模式的给定图像进行采样来压缩图像?
- asp.net-mvc - 使用 ngrok 创建 websocket
- memory - CubeMX stm32 FreeRTOS + USB 主机 MSC 用于 USB 闪存
- c# - C# DLLImport“内联”
- java - 如何在 IST 从星期六早上 6 点到星期一下午 6 点每 5 分钟运行一次 cron 作业?