C# - Cómo analizar JSON usando DeserializeObject de JSON.net

C# - Cómo analizar JSON usando DeserializeObject de JSON.net

Recientemente amplié una publicación sobre cómo llamar a la API de finanzas de yahoo con detalles sobre cómo serializar el JSON devuelto a un objeto. Decidí hacer esta publicación basándome en ella, ya que podría ayudar a otros que solo necesitan deserializar JSON. Como desarrolladores, nos gusta convertir nuestro JSON en clases para que sea más fácil trabajar con ellos y sean más "nativos" en el código que escribimos. Usaré el ejemplo de la publicación de la API de Yahoo, pero se puede aplicar a cualquier objeto JSON.

Usaremos el siguiente JSON como ejemplo:

{
  "quoteSummary": {
    "result": [
      {
        "assetProfile": {
          "address1": "One Apple Park Way",
          "city": "Cupertino",
          "state": "CA",
          "zip": "95014",
          "country": "United States",
          "phone": "408 996 1010",
          "website": "https://www.apple.com",
          "industry": "Consumer Electronics",
          "sector": "Technology"
        }
      }
    ]
  }
}

Para serializarlo en una clase, necesitamos una clase, o para las varias clases anteriores. Cada clase tendrá que representar una capa (objeto) en el JSON y juntos ser una representación de la estructura. A continuación, hice estas clases a partir de QuoteSummaryResponse (el objeto externo sin nombre) al AssetProfile que contiene la información real:

public class QuoteSummaryResponse
{
    public QuoteSummary QuoteSummary { get; set; }
}

public class QuoteSummary
{
    public QuoteSummaryResult[] Result { get; set; }
}

public class QuoteSummaryResult
{
    public AssetProfile AssetProfile { get;set; }
}

public class AssetProfile
{
    public string address1 { get; set; }
    public string city { get; set; }
    public string state { get; set; }
    public string zip { get; set; }
    public string country { get; set; }
    public string phone { get; set; }
    public string website { get; set; }
    public string industry { get; set; }
    public string sector { get; set; }
}

Usando lo anterior, podemos deserializar el JSON en un objeto usando DeserializeObject y obtener cualquier propiedad, por ejemplo, la dirección:

var data = JsonConvert.DeserializeObject<QuoteSummaryResponse>(responseBody);
var address = data.QuoteSummary.Result[0].AssetProfile.address1;

Eso es todo, ahora puede trabajar con JSON como un objeto. Espero que hayas encontrado esto útil, ¡déjame saber lo que piensas en los comentarios a continuación!