2015-05-16 3 views
1

Я хотел бы создать приложение vb.net, которое потребляет веб-службу JSON REST. После, на примере данных, которые я получаю при вызове этой службы:deserialize json без корневого объекта до класса C#/vb.net

[ 
{"id":17552,"title":"Avatar","alternative_title":null,"year":2009}, 
{"id":31586,"title":"Avatar","alternative_title":"Cyber Wars","year":2004}, 
{"id":81644,"title":"Aliens vs. Avatars","alternative_title":null,"year":2011} 
] 

Я пробовал некоторые инструменты, такие как json2csharp, чтобы сгенерировать класс из этого примера, но эти инструменты порождают класс вроде этого:

public class RootObject 
{ 
public int id { get; set; } 
public string title { get; set; } 
public string alternative_title { get; set; } 
public int year { get; set; } 
} 

Этот класс игнорирует тот факт, что список возвращается из службы. Я предполагаю, что это вызвано тем, что выход json не начинается с объекта уровня корня.

Что бы мой класс C#/vb.net выглядел для этого выхода json или он должен быть разобран «вручную»?

ответ

1

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

var result = JsonConvert.DeserializeObject<RootObject[]>(json_string); 
+0

Следующий ответ был самым сложным, но этот ответ был первым :-) Спасибо !!! – Mark

2

Я не уверен, в чем проблема именно для вас. Использование Newtonsoft Json.NET, JsonConvert.DeserializeObject<IEnumerable<RootObject>>(input), то есть это:

var s = "[{\"id\":17552,\"title\":\"Avatar\",\"alternative_title\":null,\"year\":2009}," + 
     "{\"id\":31586,\"title\":\"Avatar\",\"alternative_title\":\"Cyber Wars\",\"year\":2004}," + 
     "{\"id\":81644,\"title\":\"Aliens vs. Avatars\",\"alternative_title\":null,\"year\":2011}]"; 

var result = JsonConvert.DeserializeObject<IEnumerable<RootObject>>(s); 
foreach (var r in result) 
    Console.WriteLine("{0} - {1}, {2} ({3})", r.id, r.title, r.alternative_title, r.year); 

производит следующий вывод для меня:

17552 - Avatar, (2009) 
31586 - Avatar, Cyber Wars (2004) 
81644 - Aliens vs. Avatars, (2011) 
Смежные вопросы