在C#中解析JSON API

Cis*_*ran 16 c# parsing json json.net

所以我对编程很新,但我希望能更深入地学习它.我最近开始参与一个项目,为一个使用JSON API系统的网站创建一个WinForm程序.

我之前从未使用过API,所以我不太确定它是如何工作的,但看了几分钟之后,我似乎有了它的要点.我没有得到的是如何在C#中解析JSON的工作原理.

我在谷歌搜索后找到了 这个链接.我用这个代码(稍微)了解它.

static void Main(string[] args)
{
        WebClient c = new WebClient();
        var vLogin = c.DownloadString("https://www.openraid.us/index.php/api/login/username/password");
        //Returns string 
        //{"status":1,"error":null,"token":"250-1336515541-c48d354d96e06d488d1a2530071ef07c9532da26"} 
        //Token = random, no decisive length*/
        JObject o = JObject.Parse(vLogin);
        Console.WriteLine("Login Status: " + o["status"]);
        String sToken = "" + o["token"];
        Console.WriteLine(sToken);
        Console.WriteLine("");
        //Breaks after this
        var myRaids = c.DownloadString("https://www.openraid.us/index.php/api/myraids/"+sToken);
        JObject r = JObject.Parse(myRaids); //error occurs here
        String sEventId = "" + r["event_id"];
        Console.WriteLine("Event ID: " + sEventId);
        Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

所以对我来说,看起来我已经解析了1页并完成了处理,但是当我移动到第二页时,我得到了这个错误.

从JsonReader读取JObject时出错.当前的JsonReader项不是对象:StartArray.路径'',第1行,第1位.

所以我想我的问题是,我该如何解析超过1页或致电JSON的,哪些是要分手的JSON对象的每个部分(如最简单的方法status,errortoken,到C#字符串?

小智 45

你有没有试过JArray?取决于您尝试返回的对象类型

WebClient client = new WebClient();
var data = client.DownloadString("");
var jArray = JArray.Parse(data);
Run Code Online (Sandbox Code Playgroud)

  • +1它可能在某个地方的doco中,但人们会期望JSON.Net API更直观......感谢这个答案:-) (2认同)