2013-06-05 2 views
0

У меня есть следующий JSON объект:Как десериализовать следующую строку JSON с классом .NET JavaScriptSerializer?

[{"newValue":"{\"id\":\"1\",\"desc\":\"description\"}", 
"oldValue":"{\"id\":\"2\",\"desc\":\"description2\"}"}] 

newValue является имеет новые значения для объекта я хочу десериализацию в и oldValue содержит старые значения для объекта я хочу десериализацию в, но я не уверен, как десериализовать каждый по отдельности или может быть сделано вместе?

+0

Если это не будет помечен JavaScript вместо C#? Если это не происходит на стороне сервера в коде C#, замените тег на javascript. – evanmcdonnal

+2

Я буду одобрять вопрос @ evanmcdonnal: это на C# или Javascript? –

+0

@AndreCalil - Я использую JavaScriptSerializer от .NET, поэтому я использовал оба тега. – Xaisoft

ответ

1

Ваш JSON немного странно, так как значение NEWVALUE и OldValue является строка, а не объект. Кажется, что они дважды сериализованы. Ниже код работает (по первой десериализации всей строки JSON, а затем старой/новый/значения)

var jArr = JArray.Parse(json); 
var anon = new { id = 0, desc = "" }; 
var items = jArr.Select(item => new 
      { 
       NewValue = JsonConvert.DeserializeAnonymousType(item["newValue"].ToString(),anon), 
       OldValue = JsonConvert.DeserializeAnonymousType(item["oldValue"].ToString(),anon) 
      }) 
      .ToList(); 
+0

Я нахожу JSON.stringify на них, было бы лучше, если бы я этого не делал? – Xaisoft

+0

@Xaiso ft наиболее вероятно .. – EZI

+0

Что такое JArray? – Xaisoft

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