我相对编程还比较新,但想深入了解它。最近,我加入了一个项目,为一个使用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();
}
据我看,第一页的解析完成了且处理正常,但当我转到第二页时,出现了这个错误。
从JsonReader读取JObject时出错。当前JsonReader项不是对象:StartArray。路径“”,行1,位置1。
所以,我的问题是,如何解析多个页面或调用JSON,并将每个JSON对象的每个部分(例如status
、error
和token
)分解为C#字符串?
sToken
结尾的字符串上。 - Cistoranc.DownloadString
之后,将字符串myRaids
写出或在该行上立即放置一个调试器。我将你的JSON粘贴到http://json2csharp.com/中,并从中创建了一个有效的C#对象。 - NotMe