2014-12-10 5 views
0

I'm с помощью C# MVC и иметь следующий JSON:Deserialize JSON для известных и неизвестных типов в классе

MessageType: "Type1" 

MessageData: {{Name: "Jonas"}, Phones: [{ Fixed: "12345", Mobile: "45678" }], Addresses: [{ Home: "ababa"} ... ], { HasId: "Yes }, ... } 

MessageData будет содержать различные данные в зависимости от MessageType.

Что мне нужно для десериализации его в следующей C# структуру:

public class AjaxMsg 
{ 
    public string MessageType { get; set; } 
    public object MesssageData { get; set; } 
} 

I'm, используя родную сериализацию во время процедуры POST от клиента, но я только получить данные MessageType.

Кроме того, код:

var msgDataString = MessageData.ToString() 

возвращает "System.Object"

Как я могу получить MessageData соответственно как формат объекта?

+1

Возможный дубликат https://stackoverflow.com/questions/19307752/deserializing- polyorphic-json-classes-without-type-information-using-json-net или http://stackoverflow.com/questions/5186973/json-serialization-of-array-with-polymorphic-objects. – dbc

ответ

0

Создание класса-оболочки для десериализации:

[Serializable] 
public class AjaxMsg 
{ 
    [DataMember] 
    public string MessageType { get; set; } 

    [DataMember] 
    public object MessageData { get; set; } 
} 

public class Data 
{ 
    public IList< AjaxMsg> list {get;set;} 
} 

var obj = JsonConvert<Data>(json); 
0

Вы можете использовать метод ToObject Json.NET в:

JObject Data = Message.MessageData; 
Type type = Message.MessageType; 
object obj = Data.ToObject(type); // if you dont know the type in compile time 

MyType obj2 = Data.ToObject<MyType>(); // if you know the type in compile time 
Смежные вопросы