gpt4 book ai didi

C# 反序列化字典 使用 Json.NET 失败

转载 作者:行者123 更新时间:2023-11-30 23:24:07 25 4
gpt4 key购买 nike

我正在使用 Newtonsoft Json.NET 库进行序列化/反序列化。

我在反序列化具有 Dictionary < int,object> 属性的对象时遇到问题。在字典中 - 对象可以是任何类型。

这是我为测试所做的。

    [DataContract]
public class MyClass
{
[DataMember(Order = 1)]
public int ID { get; set; }

[DataMember]
public string Text { get; set; }

[DataMember]
public Dictionary<int,object> sub { get; set; }
}
[DataContract]
public class MyClass2
{
[DataMember]
public int ID2 { get; set; }
[DataMember]
public string Text2 { get; set; }
}

在简单的 WPF 应用程序中单击按钮。

        MyClass c = new MyClass() { ID = 1, Text = "Hello", sub = new Dictionary<int, object>() };

MyClass2 c2 = new MyClass2() { ID2 = 2, Text2 = "sub1" };
c.sub.Add(1, c2);

MyClass2 c3 = new MyClass2() { ID2 = 3, Text2 = "sub2" };
c.sub.Add(2, c3);

string file = "c:\\newfile.txt";

if (File.Exists(file))
File.Delete(file);

Newtonsoft.Json.JsonSerializer ser = new Newtonsoft.Json.JsonSerializer();

File.WriteAllText(file, JsonConvert.SerializeObject(c));

MyClass o = JsonConvert.DeserializeObject<MyClass>(File.ReadAllText(file));
}

序列化 Json 字符串 -

{"Text":"Hello","sub":{"1":{"ID2":2,"Text2":"sub1"},"2":{"ID2":3,"Text2":"sub2"}},"ID":1}

反序列化时 - MyClass 实例的属性已解析,但属性 Dictionary (sub) 仍有未解析为 MyClass2 的 json 字符串。

谁能帮帮我?

最佳答案

反序列化一个对象是不可能的。 Json.NET 无法确定确切的类。

关于C# 反序列化字典 <Int,Object> 使用 Json.NET 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37984835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com