c# - 如何在 C# 中反序列化 json
问题描述
您好我正在尝试在 c# 中反序列化以下 json:
{
"Labels":[
{
"DeviceID":9,
"Disabled":false,
"Id":0,
"Internal":"1@CB_I_AllCloseCheck",
"Label":"CB_I_AllCloseCheck",
"MAddress":0,
"Mask":2147483648,
"ModuleID":4,
"Offset":0,
"Position":1,
"SectionID":0,
"Type":16
}
]
}
使用以下代码行:
Labels myDeserializedObjList = (Labels)JsonConvert.DeserializeObject(sub, typeof(Labels));
字符串 sub 像字符串一样包含这个 json。我的班级标签如下:
public class Labels
{
public string DeviceID { get; set; }
public string Disabled { get; set; }
public string IValue { get; set; }
public string Id { get; set; }
public string Internal { get; set; }
public string Label { get; set; }
public string MAddress { get; set; }
public string Mask { get; set; }
public string ModuleID { get; set; }
public string Offset { get; set; }
public string Position { get; set; }
public string SectionID { get; set; }
public string Type { get; set; }
}
但是这个操作的结果是我所有的属性都等于null。有人知道我在做什么错吗?
解决方案
目前,您的根对象就是:一个对象。它不是一个数组。它的唯一属性(标签)是一个数组。
您应该添加一个额外的“根对象”类:
public class LabelsContainer
{
public IList<Labels> Labels {get;set;}
}
然后反序列化为:
var labelsContainer = Newtonsoft.Json.JsonConvert.DeserializeObject<LabelsContainer>(data);
var labels = labelsContainer?.Labels;
推荐阅读
- xamarin - wifiManager.AddNetwork 在 android 10 中返回 -1
- python - Matplotlib 用可以在 mplleaflet 中显示的双头箭头线连接散点图点
- machine-learning - 在处理 YEAR 列中的 NA 值时遇到问题
- oracle10g - sql developer -data modeller 生成的 DDL 包括已提交到数据库的更改
- excel - 在python中读取xlsx并格式化为数据框
- javascript - jQuery - 插入 btn 然后截断
- java - 返回类型Class<>之前的Generic <>是什么意思
- javascript - 为什么对动态内容使用 indexeddb 而不是缓存 api
- powerbi - 使用从一个表到另一个表的层次结构
- python - 从两个列表中计算对,当它们相乘时形成一个完美的正方形