簡體   English   中英

C#Json反序列化在json字符串的第一個字符處失敗

[英]C# Json Deserialization failing at first char in json string

目前,在我之前,有很多人在努力反序列化json字符串。 可悲的是,我找不到像我的問題一樣的東西。 我嘗試了多種解決方案,但沒有一個起作用。

經過一點還原並清理了所有問題后,我現在面臨的問題是:每當我嘗試反序列化json字符串時,DataContractSerializer都會在嘗試讀取字符串時引發異常。

異常發生在這里:

    public static T DeserializeJSON<T>(string json)
    {
        T obj;

        MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
        DataContractSerializer ser = new DataContractSerializer(typeof(T));

        obj = (T)ser.ReadObject(ms);

        return obj;
    }

在該行中:

        obj = (T)ser.ReadObject(ms);

這不足為奇,因為這是所有內容都經過解析的部分,並且人們將最有可能發生問題。

因此,出於測試目的,我制作了一個虛擬類來反序列化為:

[DataContract]
public class JsonTestObject
{
    [DataMember]
    string name;
}

並嘗試解析:

        JsonTestObject obj = new JsonTestObject();
        obj = JSONSerializer.DeserializeJSON<JsonTestObject>("{\"name\" : \"works\"}");

但是,即使這個簡單的測試也無法正常工作,並且會引發與我的第一個更復雜的測試相同的異常:System.Runtime.Serialization.dll中出現了“ System.Runtime.Serialization.SerializationException”。

第一層上的數據無效。 第1行,位置1。

我嘗試了多種編碼,但據我所知,這只能在解析來自外部資源(例如WebRequest)的內容時導致問題。

而且,由於我不知所措,所以希望這里的人能夠發現錯誤。

您必須使用DataContractJsonSerializer而不是DataContractSerializer 。有關更多信息,請參見此鏈接

順便說一句,我建議JSON.NET看到此鏈接以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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