簡體   English   中英

當我嘗試反序列化時,DataContractSerializer 為所有變量返回 null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM