es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Analizando solo el primer objeto del arreglo JSON

Tengo la siguiente estructura de texto en JSON:

{
   "Results":{
      "Burger King":{
         "Location":"Nueva York",
         "Address":"Avenida Dalmatas, 20"
 },
      "Mcdonalds":{
         "Location":"Los Ángeles",
         "Address":"Calle Oscar, 50"
      }
   }
}

Logré obtener los resultados de la ciudad y la dirección, pero para eso necesito mencionar el nombre del restaurante en el código para obtener la cadena de token.

Dim JSON As String = "<json aquí="">"

Dim token As JToken
token = JObject.Parse(JSON.ToString())
Dim data = token.SelectToken("Results").SelectToken("Burger King").SelectToken("Location")

Mi pregunta es, ¿cómo puedo listar solo los restaurantes (Burger King, Mcdonalds, etc), por ejemplo, en un Listbox? De esta manera puedo agregar una función que verifique la dirección y ciudad con la elección del usuario, lo cual ya sé y entiendo cómo hacerlo, pero obtener el token solo con los nombres de los restaurantes está siendo difícil para mí. Si tengo un nuevo nombre de restaurante, por ejemplo, no querría incluirlo manualmente en el código. He intentado de muchas formas diferentes, pero la última que he utilizado es la siguiente:

Dim data = token.SelectToken("Results").SelectToken(0) 'Pensé que imprimiría 'Burger King'
'o este otro
Dim data = token.SelectToken("Results")(0).ToString()

También he intentado distintos bucles “Para cada” pero tampoco tuve éxito. He investigado innumerables métodos sobre cómo hacer esto y nada funciona. Creo que es algo simple que estoy ignorando o olvidando por completo… ¡Por favor, ayúdame! Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para listar solo los nombres de los restaurantes (Burger King, Mcdonalds, etc) en un Listbox de manera dinámica sin codificarlos directamente, puedes usar el método Properties() disponible en JToken. Esto devolverá todos los tokens hijos de un objeto en el orden en que aparecen en la cadena de JSON. Luego puedes recorrer estos tokens y extraer los nombres de los restaurantes de la siguiente manera:

    “`vb.net
    Dim JSON As String = aquí va el json

    Dim token As JToken = JObject.Parse(JSON)
    Dim restaurantes As List(Of String) = New List(Of String)

    For Each propertyToken As JToken In token.SelectToken(“Results”).Properties()
    restaurantes.Add(propertyToken.Name)
    Next

    ‘ Ahora puedes usar la List(Of String) para poblar tu Listbox
    listBox1.DataSource = restaurantes
    “`

    Esto agregará de manera dinámica todos los nombres de los restaurantes al Listbox para que no tengas que codificarlos manualmente en tu código.

Comments are closed.