c# Json反序列化在Json字符串的第一个字符处失败
本文关键字:Json 字符 失败 第一个 字符串 反序列化 | 更新日期: 2023-09-27 18:04:28
我目前正在挣扎,因为很多人在我之前的问题与反序列化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。SerializationException"发生在system . runtime . serialize .dll .
第一层数据无效。第一行,位置1
我尝试了多种编码,但据我所知,这只会导致在解析来自和外部源的东西时出现问题,例如WebRequest。
由于我的知识已经到了尽头,我希望这里有人能指出这个错误。
您必须使用DataContractJsonSerializer
而不是DataContractSerializer
,请参阅此链接以获取更多信息。
顺便说一句,我推荐JSON。