C# Json 反序列化在 json 字符串中的第一个字符处失败
C# Json Deserialization failing at first char in json string
我目前和我之前的很多人一样在反序列化 json 字符串的问题上苦苦挣扎。可悲的是,我无法找到与我的问题非常相似的任何内容。我尝试了多种解决方案,但 none 起作用了。
稍微还原并清理所有内容后,我遇到了现在面临的问题:每次我尝试反序列化 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);
这并不奇怪,因为它是所有内容都被解析的部分,而且人们最有可能出错。
所以出于测试目的,我制作了一个虚拟 class 反序列化为:
[DataContract]
public class JsonTestObject
{
[DataMember]
string name;
}
并尝试解析:
JsonTestObject obj = new JsonTestObject();
obj = JSONSerializer.DeserializeJSON<JsonTestObject>("{\"name\" : \"works\"}");
然而,即使是这个简单的测试也无法正常工作,并抛出与我在第一个更复杂的测试中遇到的相同的异常:
"System.Runtime.Serialization.SerializationException" 发生在 System.Runtime.Serialization.dll .
第一层数据无效。第 1 行,位置 1.
我尝试了多种编码,但据我所知,这只会在解析来自外部源的内容时导致问题,例如WebRequest.
由于我的知识已经穷尽,我希望这里有人能指出错误。
我目前和我之前的很多人一样在反序列化 json 字符串的问题上苦苦挣扎。可悲的是,我无法找到与我的问题非常相似的任何内容。我尝试了多种解决方案,但 none 起作用了。
稍微还原并清理所有内容后,我遇到了现在面临的问题:每次我尝试反序列化 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);
这并不奇怪,因为它是所有内容都被解析的部分,而且人们最有可能出错。
所以出于测试目的,我制作了一个虚拟 class 反序列化为:
[DataContract]
public class JsonTestObject
{
[DataMember]
string name;
}
并尝试解析:
JsonTestObject obj = new JsonTestObject();
obj = JSONSerializer.DeserializeJSON<JsonTestObject>("{\"name\" : \"works\"}");
然而,即使是这个简单的测试也无法正常工作,并抛出与我在第一个更复杂的测试中遇到的相同的异常: "System.Runtime.Serialization.SerializationException" 发生在 System.Runtime.Serialization.dll .
第一层数据无效。第 1 行,位置 1.
我尝试了多种编码,但据我所知,这只会在解析来自外部源的内容时导致问题,例如WebRequest.
由于我的知识已经穷尽,我希望这里有人能指出错误。