2012-02-02 26 views
5

Sto cercando di utilizzare un unico servizio web che restituisce i dati richiesti in formato JSON. Ora il punto effettivo è che posso recuperare i dati dal particolare URL del servizio web nella stringa.Confusione nel recupero dei dati da JSON

string url= @"http://api.oodle.com/api/v2/listings?key=TEST&region=chicago&category=vehicle&format=json"; 

    string jsonString = new WebClient().DownloadString(url); 

Ora il punto è ottenere i dati in stringa (in formato JSON). Ma non so come convertire la stringa in stringa JSON e come recuperare i dati da questa stringa.

Lasciate che vi faccia esempio in modo da poter facilmente capire

se il mio jsonString è come

{ 
    "current":{ 
     "region":{ 
     "id":"chicago", 
     "name":"Chicago" 
     }, 
     "category":{ 
     "id":"vehicle", 
     "name":"Cars & Vehicles", 
     "abbrev":"Vehicles" 
     }, 
     "start":1, 
     "num":10 
    } 
} 

Come posso ottenere region_name da quella stringa? Spero che tu mi capisca ! Prova a usare Test Link!

+0

è che il codice C#? –

+1

@ ŁukaszBachman Sì, lo è! – Chintan

+2

http://stackoverflow.com/questions/401756/parsing-json-using-json-net –

risposta

6

Aggiungere un riferimento a System.Web e quindi aggiungere alla sezione utilizzando

using System.Web.Script.Serialization; 

Quindi (utilizzando g tuo esempio stringa JSON)

string jsonString = "{\"current\":{\"region\":{\"id\":\"chicago\",\"name\":\"Chicago\"},\"category\":{\"id\":\"vehicle\",\"name\":\"Cars & Vehicles\",\"abbrev\":\"Vehicles\"},\"start\":1, \"num\":10}}"; 

JavaScriptSerializer serializer = new JavaScriptSerializer(); 

CurrentRecord currentRecord = serializer.Deserialize<CurrentRecord>(jsonString); 

string regionName = currentRecord.current.region.name; 

anche aggiungere le seguenti classi al progetto:

[Serializable] 
public class CurrentRecord 
{ 
    public current current; 
} 

[Serializable] 
public class current 
{ 
    public region region; 
    public category category; 
    public int start; 
    public int num; 
} 

[Serializable] 
public class region 
{ 
    public string id; 
    public string name; 
} 

[Serializable] 
public class category 
{ 
    public string id; 
    public string name; 
    public string abbrev; 
} 
+2

Oppure puoi utilizzare alcune librerie JSON di terze parti, come JSON.Net. – svick

+1

JSON.net è piuttosto lucido, ma mantenuto con System.Web.Script.Serialization per questa domanda. –

+0

@NicholasMurray Ho provato questo! Completamente riuscito! Grazie ! Ma ho una query, è necessario dichiarare la tua classe come 'Serializable'? Perché ho provato senza 'Serializable' ma funziona comunque bene! Allora qual è lo scopo di dichiarare 'Serializable'? – Chintan

1

Stai l'elaborazione della stringa di ritorno JSON in Java o JavaScript?

Se si sta elaborando la stringa di risposta JSON in Java, si può fare uso di GSON. Ecco un tutorial che mostra come: Parsing a JSON String into an object with GSON easily.

Per il vostro caso, avete bisogno di una classe come:

class Current{ 
    private Region region; 
    private Category category; 
    private int start; 
    private int num; 

    // getters and setters 

    class Region{ 
    private String id; 
    private String name; 

    // getters and setters 
    } 

    class Category{ 
    private String id; 
    private String name; 
    private String abbreviation; 

    // getters and setters 
    } 
} 

Altrimenti, se si stanno elaborando questa stringa di risposta JSON in Javascript, allora si può avere uno sguardo a questo: http://www.json.org/js.html

alert(jsonReturnString.current.region.name); 
+0

_____in ASP .NET !! – Chintan

Problemi correlati