quindi sono abbastanza nuovo alla programmazione ma sto cercando di approfondirlo. Recentemente ho iniziato a partecipare a un progetto per creare un programma WinForm per un sito Web che utilizza un sistema API in JSON.Analisi dell'API JSON in C#
Non ho mai usato un'API prima quindi non sono abbastanza sicuro di come funzioni, ma dopo averlo guardato per alcuni minuti, mi sembra di averne il senso. Quello che non capisco è come funziona esattamente l'analisi di JSON in C#.
Ho trovato this link dopo una piccola ricerca su google. E ho funzionato (in qualche modo) con questo codice.
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();
}
Quindi, per me sembra che abbia l'analisi di 1 pagina fatta e gestita, ma quando mi muovo sul secondo ottengo questo errore.
Errore durante la lettura jobject da JsonReader. L'elemento corrente di JsonReader non è un oggetto: StartArray. Percorso '', riga 1, posizione 1.
Quindi credo che la mia domanda è, come faccio a parse più di 1 pagina o chiamare il numero di JSON e quale sarebbe il modo più semplice per rompere ogni sezione del JSON oggetto (come status
, error
, e token
, in C# stringhe?
Dall'aspetto, la seconda richiesta non restituisce JSON valido. Hai verificato che i dati restituiti sono ciò che pensi che sia? –
Bene, il token non rimane mai uguale, ma è valido per 24 ore. Ho aperto manualmente l'API in un browser e ho ripreso [questo] (http://pastebin.com/3anJMwsZ). Quindi mi sembra JSON valido per me, ma l'errore potrebbe essere nella chiamata per scaricare la stringa che ha 'sToken' alla fine. – Cistoran
Funzionalmente, il tuo codice sembra buono; inoltre, la risposta JSON che hai fornito sembra valida. È possibile che venga restituito qualcos'altro dalla chiamata a DownloadString()? Per motivi di sanità mentale, prova a stampare esattamente ciò che viene restituito da quella chiamata al metodo senza analizzarlo. –