小编Jør*_*vik的帖子

Newtonsoft Json将字典从DataContractJsonSerializer反序列化为键/值列表

我有一个字典序列化存储与DataContractJsonSerializer,我想用Newtonsoft.Json反序列化.

DataContractJsonSerializer已将Dictionary序列化为键/值对列表:

{"Dict":[{"Key":"Key1","Value":"Val1"},{"Key":"Key2","Value":"Val2"}]}
Run Code Online (Sandbox Code Playgroud)

有什么很酷的选择,我可以给它JsonConvert.DeserializeObject<>(),它将支持数据格式和Newtonsoft.Json的格式?

{"Dict":{"Key1":"Val1","Key2":"Val2"}}
Run Code Online (Sandbox Code Playgroud)

是Newtonsoft.Json创建的漂亮格式,我希望能够在过渡期内同时读取旧的DataContract格式和新的Newtonsoft格式.

简化示例:

    //[JsonArray]
    public sealed class Data
    {
        public IDictionary<string, string> Dict { get; set; }
    }

    [TestMethod]
    public void TestSerializeDataContractDeserializeNewtonsoftDictionary()
    {
        var d = new Data
        {
            Dict = new Dictionary<string, string>
            {
                {"Key1", "Val1"},
                {"Key2", "Val2"},
            }
        };

        var oldJson = String.Empty;
        var formatter = new DataContractJsonSerializer(typeof (Data));
        using (var stream = new MemoryStream())
        {
            formatter.WriteObject(stream, d);
            oldJson = Encoding.UTF8.GetString(stream.ToArray());
        }

        var newJson = JsonConvert.SerializeObject(d);
        // [JsonArray] on Data class gives: …
Run Code Online (Sandbox Code Playgroud)

c# json dictionary json.net deserialization

16
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×1

deserialization ×1

dictionary ×1

json ×1

json.net ×1