2016-04-01 4 views
0

У меня есть сообщение JSON в виде строки, которая выглядит примерно так:C# Deserialize JSON в формате JSON

{"Event":"Payment", "Desc":"Deschereblahblahblah", Data":"{"Result":3,"Reference":12345 ... } } 

Я просто хочу знать, как лучше всего, чтобы получить часть данных сообщения, (я используя JavascriptSerializer в настоящее время), а затем внутри «Данные» в другую переменную. Я могу захватить Событие достаточно легко, но если я затем попробую вторую сериализацию, чтобы получить данные, это ошибки!

Было бы лучше сделать это динамически или использовать классы?

+1

ли выше действительно фактические данные? Это явно недействительно Json. – CodesInChaos

+0

какая ошибка вы получаете? вставьте код C#, который вы используете. – codetoshare

ответ

1

Если вам требуется только часть данных в одном месте, я бы рекомендовал вам использовать JObject от Newtonsoft Json.Net;

var json = 
    "{\"Event\":\"Payment\", \"Desc\":\"Deschereblahblahblah\",\"Data\":{\"Result\":3,\"Reference\":12345 } }"; 


var data = JObject.Parse(json)["Data"]; 

var result = data["Result"].Value<int>(); 
var reference = data["Reference"].Value<int>(); 

Вы можете также подготовить специальный класс:

public class Data 
{ 
    public int Result { get; set; } 
    public int Reference { get; set; } 
} 

Тогда:

var dataInstance = JObject.Parse(json)["Data"].ToObject<Data>();