我将字符串反序列化为Dictionary。下面是反序列化的代码:无法将字符串反序列化为字典<string,string>
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();
}
}
}
这是怎么了传递输入字符串:
string json = @"{""key1"":""value1"",""key2"":""value2""}";
不过,我在该行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,Culture = neutral,PublicKeyToken = b77a5c561934e089]]。 根级别的数据无效。 1号线,位置1
我试图让输入这样的:
string json = "[{'key1':'value1','key2':'value2'}]";
但我仍然得到同样的错误。我究竟做错了什么?
编辑:我不能将Deserialize方法更改为我的客户端写的方法。我只是写单元测试来测试它。
看看http://stackoverflow.com/questions/12397733/deserializing-a-list-of-objects-that-contain-a-dictionary –
什么关于字符串json =“['key1':'value1','key2':'value2']”; ? –
请参阅https://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer(v=vs.110).aspx.Specially https://msdn.microsoft.com/en- us/library/bb908232(v = vs.110).aspx –