将没有根对象的 json 反序列化为 c#/vb.net class
deserialize json without root object to c#/vb.net class
我想构建一个使用 JSON REST Web 服务的 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 等工具从这个示例中生成 class,但这些工具生成的 class 如下所示:
public class RootObject
{
public int id { get; set; }
public string title { get; set; }
public string alternative_title { get; set; }
public int year { get; set; }
}
此 class 忽略了从服务返回列表这一事实。我假设这是由于 json 输出不是以根级对象开始的事实造成的。
对于此 json 输出,我的 c#/vb.net class 会是什么样子,还是应该对其进行解析 "manually"?
我不确定您的问题到底是什么。使用 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)
您可以使用 Json.Net,并反序列化为数组:
var result = JsonConvert.DeserializeObject<RootObject[]>(json_string);
我想构建一个使用 JSON REST Web 服务的 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 等工具从这个示例中生成 class,但这些工具生成的 class 如下所示:
public class RootObject
{
public int id { get; set; }
public string title { get; set; }
public string alternative_title { get; set; }
public int year { get; set; }
}
此 class 忽略了从服务返回列表这一事实。我假设这是由于 json 输出不是以根级对象开始的事实造成的。
对于此 json 输出,我的 c#/vb.net class 会是什么样子,还是应该对其进行解析 "manually"?
我不确定您的问题到底是什么。使用 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)
您可以使用 Json.Net,并反序列化为数组:
var result = JsonConvert.DeserializeObject<RootObject[]>(json_string);