为什么我的反序列化对象为null?

时间:2016-08-10 23:23:40

标签: c# json json.net

我只是尝试使用<dependency> <groupId>dcm4che</groupId> <artifactId>dcm4che-core</artifactId> <version>2.0.29</version> </dependency> 属性临时存储字符串中的数据。我测试了很多方法,那些函数是我可以使用的(因为在我真正的类中我有ObjectId,很多序列化类都不起作用)。

然而,即使进行简单的测试它也不起作用,我的反序列化为空:

Serialization

结果是(public class MyClass { public string test = "bob"; } static public void function() { MyClass test = new MyClass(); string data = Newtonsoft.Json.JsonConvert.SerializeObject(test); object testb = Newtonsoft.Json.JsonConvert.DeserializeObject(data); MyClass testa = Newtonsoft.Json.JsonConvert.DeserializeObject(data) as MyClass; } ):

debugger

为什么呢?如何将带有键和值的testb对象转换为正确的类型?

3 个答案:

答案 0 :(得分:2)

问题在于你的打字方式。

尝试这个,它应该工作得很好

MyClass testa = Newtonsoft.Json.JsonConvert.DeserializeObject<MyClass>(data);

这就是全部。

答案 1 :(得分:1)

使用通用反序列化方法:

MyClass testa = Newtonsoft.Json.JsonConvert.DeserializeObject<MyClass>(data);

答案 2 :(得分:1)

您应该使用公共getter和setter定义您的类:

public class MyData
{
    public string Name {get; set;}
}

然后,创建一个类的实例并将其序列化:

var data = new MyData() { Name = "bob" };

var serialized = JsonConvert.SerializeObject(data);
Console.WriteLine(serialized);

反序列化时,可以使用DeserializeObject<T>告诉JSON.NET将反序列化的类型反馈给:

var deserialized = JsonConvert.DeserializeObject<MyData>(serialized);
Console.WriteLine(deserialized.Name);

活小提琴:https://dotnetfiddle.net/w4B1IK