【发布时间】:2019-01-28 07:32:48
【问题描述】:
您好,我正在尝试在 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。有谁知道我做错了什么?
【问题讨论】:
-
您有一个具有
Labels属性的对象,其中包含一个标签数组。您正试图反序列化它,就好像它是单个Labels对象一样。Labels不是列表 -
你需要在列表中打包标签(来自 json)。你得到的回复是
List<Labels> Labels -
好的,所以代码应该像这个? List
myDeserializedObjList = (List )JsonConvert.DeserializeObject(sub, typeof(List )); -
在 vs2017 中将您的 json 复制到剪贴板,然后选择编辑/粘贴特殊/粘贴类作为 json。这将生成与您的 json 完全匹配的类。
-
再次使用 Json2Csharp 或 Visual Studio 特殊粘贴回答了一个 Json C# 问题。