2014-09-04 104 views
0

我试图解析这可以在这里找到一个以.json文件 - http://files.star-made.org/releasebuildindex.json在这个片段我在此网站上发现 -​​JsonValue.Parse不返回正确的结果

 WebClient webClient = new WebClient(); 
     dynamic result = JsonValue.Parse(new WebClient().DownloadString("http://files.star-made.org/releasebuildindex.json")); 
     Console.WriteLine(result.builds.version); 

随着文件的当前版本(每周更新一次或更新游戏更新),它应该返回字符串“0.163”,但它现在返回“默认”,经过一些混乱之后,如果该标签实际上不存在,它会返回。

我不知道Json,也不能编辑该文件,因为我不是它的创建者,任何帮助都不胜感激。

-James

回答

1

构建是一个数组。你得到的版本是这样的:

Console.WriteLine(results.builds[0].version); 

探讨您可以使用http://json2csharp.com/一个JSON字符串的结构。

1

动态关键字很好,但静态代码检查和自动完成更好。要启用此功能,您需要拥有POCO(Plain Old CLR(通用语言运行时)对象)。

复制JSON和粘贴特殊 - >粘贴为JSON类(你至少需要Visual studio 2012.2 RC):

public class Rootobject 
    { 
     public string indexfileversion { get; set; } 
     public string type { get; set; } 
     public Build[] builds { get; set; } 
    } 

    public class Build 
    { 
     public string version { get; set; } 
     public string build { get; set; } 
     public string rawVersion { get; set; } 
     public string path { get; set; } 
    } 

然后你可以使用:

var json = new WebClient() 
    .DownloadString("http://files.star-made.org/releasebuildindex.json"); 
var result = new JavaScriptSerializer().Deserialize<Rootobject>(json); 
Console.WriteLine(result.builds[0].version);