[英]DataContractSerializer returns null for all the variables when I try to deserialize
我有一個問題,DataContractSerializer 為我的所有變量返回 null。 就好像它沒有看到它們什么的。 我正在使用它將 json 文件反序列化為一個對象。 我讓它為另一個 json 文件工作,該文件使用另一個具有 3 個字符串屬性的類。 這個由 40 個屬性組成,主要是字符串和一些布爾值。 我已經研究了幾個小時,我似乎無法找到我做錯了什么。 我什至只用 1 個字符串屬性嘗試過它,它仍然返回 null。 這是一個只有 1 個 string 屬性和 1 個 bool 屬性的簡化版本。 任何建議都非常感謝。
謝謝
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; }
}
}
我通過將這個反序列化的代碼與我之前的代碼進行比較,設法找到了問題所在。 唯一的區別是 Json 文件中變量的名稱。 它們包含空間的 Unicode (x00200) 的事實導致 DataContractDeserializer 內部出現一些問題。 我相信它把它看作是空間,所以它看到的不是“Proposal_x0020_Type”,而是“Proposal_ _Type”,但我不確定。 無論如何,解決方案是從 Json 文件中的所有變量中刪除 x0020。 之后它工作得很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.