2012-03-06 14 views
25

¿Alguien sabe cómo convertir una cadena que contiene json en una matriz C#. Tengo esto que lee el texto/json de un webBrowser y lo almacena en una cadena.¿Convierte json en una matriz de C#?

string docText = webBrowser1.Document.Body.InnerText; 

Sólo tiene que cambiar de alguna manera esa cadena json en una matriz. He estado mirando Json.NET pero no estoy seguro si eso es lo que necesito, ya que no quiero cambiar una matriz en json; pero al revés. ¡Gracias por la ayuda!

+0

Su cadena no tiene que ser una matriz, también podría ser un hash. Y una variedad de qué? ¿Cómo se ve tu cuerda y qué quieres que sea el resultado? Qué estás intentando lograr. –

+0

posible duplicado de [Parse JSON en C#] (http://stackoverflow.com/questions/1212344/parse-json-in-c-sharp) –

Respuesta

45

acaba de tomar la cuerda y utilizar el JavaScriptSerializer deserializar en un objeto nativo. Por ejemplo, teniendo este JSON:

string json = "[{Name:'John Simith',Age:35},{Name:'Pablo Perez',Age:34}]"; 

Se necesitaría para crear una clase C# llamado, por ejemplo, persona definida como tal:

public class Person 
{ 
public int Age {get;set;} 
public string Name {get;set;} 
} 

Ahora puede deserializar la cadena JSON en una matriz de la persona haciendo:

JavaScriptSerializer js = new JavaScriptSerializer(); 
Person [] persons = js.Deserialize<Person[]>(json); 

He aquí una link to JavaScriptSerializer documentation.

Nota: mi código anterior no fue probado, pero esa es la idea Lo probó. A menos que esté haciendo algo "exótico", debería estar bien usando el JavascriptSerializer.

+0

¡Gracias! ¿Sabes qué espacio de nombres utiliza JavascriptSerializer? Obteniendo el error 'no se pudo encontrar'. –

+0

Sí, está en la documentación que he vinculado. Está en System.Web.Script.Serialization. Debe agregar una referencia al ensamblado System.Web.Extensions. – Icarus

+0

Ah, gracias. Lo tengo trabajando. Creo que es 'JavaScriptSerializer' y no 'JavascriptSerializer'. Es por eso que estaba recibiendo ese error. Es posible que desee editar eso. :) –

5

Sí, Json.Net es lo que necesita. Básicamente, quieres deserializar una cadena Json en una matriz de objects.

Ver their examples:

string myJsonString = @"{ 
    "Name": "Apple", 
    "Expiry": "\/Date(1230375600000+1300)\/", 
    "Price": 3.99, 
    "Sizes": [ 
    "Small", 
    "Medium", 
    "Large" 
    ] 
}"; 

// Deserializes the string into a Product object 
Product myProduct = JsonConvert.DeserializeObject<Product>(myJsonString); 
2
using Newtonsoft.Json; 

Instalar esta clase en la consola paquete Esta clase funciona bien en todas las versiones de .NET, por ejemplo, en mi proyecto: Tengo DNX 4.5.1 y DNX NÚCLEO 5.0 y todo funciona.

En primer lugar antes de JSON deserialización, tiene que declarar una clase para leer con normalidad y almacenar algunos datos en alguna Esta es mi clase:

public class ToDoItem 
{ 
    public string text { get; set; } 
    public string complete { get; set; } 
    public string delete { get; set; } 
    public string username { get; set; } 
    public string user_password { get; set; } 
    public string eventID { get; set; } 
} 

En HttpContent sección en la que se solicitan datos por petición GET por ejemplo:

HttpContent content = response.Content; 
string mycontent = await content.ReadAsStringAsync(); 
//deserialization in items 
ToDoItem[] items = JsonConvert.DeserializeObject<ToDoItem[]>(mycontent); 
Cuestiones relacionadas