2016-08-10 2 views
1

Я просто пытаюсь использовать свойства Serialization для временного хранения данных в строке. Я тестировал много методов, и эти функции я использовал (поскольку в моих реальных классах у меня есть ObjectId, многие классы сериализации не работают).Почему мой десериализованный объект null?

Однако, даже с помощью простого теста он не работает, моя десериализация равно нулю:

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):

datab : { "test": "bob"} 
testa is null. 

Почему? Как я могу преобразовать объект типа testb с ключами и значением в мой правильный тип?

ответ

2

Проблема заключается в том, как вы бросаете типа.

Попробуйте это один, и он должен работать нормально

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

Это должно быть все.

1

Используйте универсальный метод десериализация:

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

Вы должны определить свои классы с общественными добытчиками и сеттеров:

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); 

Живая fi ddle: https://dotnetfiddle.net/w4B1IK

Смежные вопросы