2012-02-02 16 views
5

Estoy tratando de utilizar un servicio web que devuelve los datos solicitados en formato json. Ahora el punto real es que puedo buscar los datos de la URL del servicio web en particular en una cadena.Confusión en la obtención de datos de JSON

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

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

Ahora el punto es que obtengo los datos en cadena (en formato JSON). Pero no sé cómo convertir la cadena en cadena JSON y cómo recuperar datos de esta cadena.

Déjeme darle ejemplo para que pueda entender fácilmente

si mi jsonString es como

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

¿Cómo puedo obtener REGION_NAME de esa cadena? Espero que me entiendas ! Intenta usar Test Link!

+0

es que el código C#? –

+1

@ ŁukaszBachman Sí lo es! – Chintan

+2

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

Respuesta

6

Agregue una referencia a System.Web y luego agregue a su sección de uso

using System.Web.Script.Serialization; 

Then (usin g su ejemplo de cadena 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; 

añadir también las siguientes clases a su proyecto:

[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

O puede usar alguna biblioteca JSON de terceros, como JSON.Net. – svick

+1

JSON.net es bastante hábil, pero se mantuvo con System.Web.Script.Serialization para esta pregunta. –

+0

@NicholasMurray ¡He intentado esto! ¡Totalmente exitoso! Gracias ! Pero tengo una consulta, ¿es necesario declarar su clase como 'Serializable'? Porque lo he intentado sin 'Serializable', ¡pero aún funciona bien! Entonces, ¿cuál es el propósito de declarar 'Serializable'? – Chintan

1

¿Está procesando la cadena de retorno JSON en Java o JavaScript?

Si está procesando la cadena de respuesta JSON en Java, puede hacer uso de GSON. Aquí hay un tutorial que le muestra cómo: Parsing a JSON String into an object with GSON easily.

Para su caso, necesita una clase como:

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 
    } 
} 

Else si está procesando esta Cadena de respuesta JSON en Javascript, entonces se puede echar un vistazo a esto: http://www.json.org/js.html

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

_____in ASP .NET !! – Chintan

Cuestiones relacionadas