nit*_*igo 1 c# serialization dictionary deserialization
我正在将字符串反序列化为字典。这是反序列化的代码:
public T Deserialize<T>(string serialized)
{
var serializer = new DataContractSerializer(typeof(T));
StringReader reader = null;
try
{
reader = new StringReader(serialized);
using (XmlTextReader stm = new XmlTextReader(reader))
{
reader = null;
return (T)serializer.ReadObject(stm);
}
}
finally
{
if (reader != null)
{
reader.Dispose();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我传递输入字符串的方式:
string json = @"{""key1"":""value1"",""key2"":""value2""}";
Run Code Online (Sandbox Code Playgroud)
但是我在该行收到错误ReadObject(stm)
:
反序列化 System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version= 类型的对象时出错4.0.0.0,文化=中立,PublicKeyToken=b77a5c561934e089]]。根级别的数据无效。第 1 行,位置 1。
我尝试过这样输入:
string json = "[{'key1':'value1','key2':'value2'}]";
Run Code Online (Sandbox Code Playgroud)
但我仍然遇到同样的错误。我究竟做错了什么?
编辑:我无法更改反序列化方法,因为它是我的客户编写的方法。我只是编写单元测试来测试它。
我建议您不要跳过所有这些环节并使用DataContractSerializer
和创建自定义逻辑来解析 json,而是研究Json.NET,这让这变得很有趣:
string json = @"{""key1"":""value1"",""key2"":""value2""}";
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
Run Code Online (Sandbox Code Playgroud)
编辑:
看起来好像您正在尝试将 JSON 传递给只能解析 XML 字符串的方法。我建议您询问您的客户提供商可以使用哪些可接受的输入。