使用C#和JSON.net读取JSON文件

我很难理解如何使用JSON.net来读取json文件。

该文件看起来像这样:

"version": { "files": [ { "url": "http://www.url.com/", "name": "someName" }, { "name": "someOtherName" "url": "http://www.url.com/" "clientreq": true }, .... 

我真的不知道我怎么能读到这个文件..我需要做的是读取行并通过“url”下载文件..我知道如何下载文件等等,但我不知道我如何使用JSON.net读取json文件并遍历每个部分,并下载文件..

你能帮忙吗?

最简单的方法是将json反序列化为这样的动态对象

然后,您可以访问其属性循环以获取URL

 dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString); var urls = new List(); foreach(var file in result.version.files) { urls.Add(file.url); } 

http://json2csharp.com/可帮助您根据JSON数据类型创建C#类。 一旦您的类与您的数据匹配,您可以使用Json.NET反序列化,然后使用您的数据:

 var myMessage = JsonConvert.DeserializeObject(myString); foreach (var file in myMessage.Version.Files) { // download file.Url } 

或者您可以将其作为dynamic对象访问:

 dynamic myMessage = JsonConvert.DeserializeObject(myString); foreach (var file in myMessage.version.files) { // download file.url } 

如果您使用类,它们可能是:

 public class File { public Uri Url { get; set; } public string Name { get; set; } public bool? ClientReq { get; set; } } public class Version { public IList Files { get; set; } } public class MyMessage { public Version Version { get; set; } } 

(请注意,Json.Net足够聪明,可以映射大小写不同的属性,并将URL转换为Uri对象)当字符串如下时,它可以工作:

 string myString = @"{""version"": { ""files"": [ { ""url"": ""http://www.url.com/"", ""name"": ""someName"" }, { ""name"": ""someOtherName"", ""url"": ""http://www.url.com/"", ""clientreq"": true }]}}";