我目前正在努力解决有关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。
当我知道自己的时候,我希望有人可以发现错误。