无法将字符串反序列化为字典<string,string>

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)

但我仍然遇到同样的错误。我究竟做错了什么?

编辑:我无法更改反序列化方法,因为它是我的客户编写的方法。我只是编写单元测试来测试它。

Yuv*_*kov 5

我建议您不要跳过所有这些环节并使用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 字符串的方法。我建议您询问您的客户提供商可以使用哪些可接受的输入。