JsonValue.Parse没有返回正确的结果

时间:2014-09-04 09:44:52

标签: c# .net json

我正在尝试解析一个可以在这里找到的.Json文件 - http://files.star-made.org/releasebuildindex.json我在这个网站上找到的这个片段 -

        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

2 个答案:

答案 0 :(得分:1)

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

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

要探索json字符串的结构,可以使用http://json2csharp.com/

答案 1 :(得分:1)

动态关键字很不错,但静态代码检查和自动完成更好。要启用此功能,您需要具有POCO(普通语言运行时)的简单旧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);