【发布时间】:2021-01-12 03:19:21
【问题描述】:
我有一个问题,DataContractSerializer 为我的所有变量返回 null。就好像它没有看到它们或什么的。我正在使用它将 json 文件反序列化为对象。我让它为另一个使用另一个具有 3 个字符串属性的类的 json 文件工作。这个由 40 个属性组成,主要是字符串和一些布尔值。我已经为此工作了几个小时,但我似乎无法找到我做错了什么。我什至只尝试了 1 个字符串属性,但它仍然返回 null。这是一个简化版本,只有 1 个字符串属性和 1 个布尔属性。任何建议都非常感谢。
谢谢
JSON:
[{"Proposal_x0020_Type":"Lite Proposal","BI_x0020_Criteria_x0020_1":true}]
尝试反序列化字符串的函数:
public Proposal[] Deserializer(string jsonFile)
{
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonFile));
DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(Proposal[]));
Proposal[] projectArr = (Proposal[])deserializer.ReadObject(ms);
Console.WriteLine(jsonFile);
Console.ReadLine();
return projectArr;
}
反序列化器应该创建的对象的类: 命名空间PMIS
{
[DataContract]
public class Proposal
{
[DataMember(Order = 0)]
public string Proposal_x0020_Type { get; set; }
[DataMember(Order = 1)]
public bool BI_x0020_Criteria_x0020_1 { get; set; }
}
}
【问题讨论】:
-
使用
DataContractJsonSerializer这个json可以反序列化为Dictionary<string, object>[]。否则,您可以使用其他一些序列化程序。例如,json.net。
标签: c# serialization json-deserialization datacontractserializer