2016-12-08 2 views
0

У меня есть данные Json с двумя полями, которые являются идентификатором и контентом. Содержимое будет хранить другие данные Json. Я хочу десериализовать первую (внешнюю сторону) только Json. Можно ли это сделать?C# Как десериализовать вложенные данные Json

{"Json1": 
[ 
{"ID":"123", 
"Content":"{"Json2":[{"test1":"234","test2":"456"}]}"} 
]} 

public class testing 
{ 
    public List<testing2> Json1 { get; set; } 
} 
public class testing2 
{ 
    public string ID { get; set; } 
    public string Content { get; set; } 
} 

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
testing test= serializer.Deserialize<testing>(JsonData); 

Я ожидаю, что значение test.Json1 [0] .content равно { "Json2": [{ "test1": "234", "test2": "456"}]} после десериализации , Тем не менее, исключение «Недопустимый объект передан, ':' или '}' ожидается." запрашивается указанный выше код.

+0

Почему бы не использовать newtonsoft.json? – mybirthname

+4

Является ли ваш контент даже действительным json? Похоже, вы не избегаете кавычек, так как вы знаете, когда заканчивается строка или ее просто цитата из внутреннего соединения? – Charleh

+0

Постарайтесь проверить его здесь http://jsonlint.com/ и разместить здесь действительный JSON – Artiom

ответ

2

Как уже было сказано выше, ваш json недействителен. Побег цитаты с \,

var [email protected]"{ 
    ""Json1"": [{ 
    ""ID"": ""123"", 
    ""Content"": ""{\""Json2\"":[{\""test1\"": \""234\"",\""test2\"":\""456\""}]}"" 
    }] 
    }"; 

Вот пример десериализации с NewtwonJson

var instance = JsonConvert.DeserializeObject<testing>(jsonData);