none
Crear Lista o Array en Newtonsoft.Json.Linq RRS feed

  • Pregunta

  • Hola,

    No se si estoy posteando en el sitio correcto.

    Uso VB.Net de lenguaje y la documentacion esta en C# y no consigo hacer esto.

    Necesito algo asi:

    {
    
      "name": "Premium Quality",
    
      "slug": "premium-quality-19",
    
      "type": "simple",
    
      "status": "publish",
    
      "featured": false,
    
      "catalog_visibility": "visible",
    
      "description": "<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>\n",
    
      "short_description": "<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>\n",
    
      "sku": "OX6573984",
    
      "price": "21.99",
    
      "regular_price": "21.99",
    
      "sale_price": "",
    
      "tax_status": "taxable",
    
      "tax_class": "",
    
      "manage_stock": false,
    
      "stock_quantity": 58,
    
      "stock_status": "instock",
    
      "backorders": "no",
    
      "sold_individually": false,
    
      "weight": "",
    
      "reviews_allowed": true,
    
      "upsell_ids": [],
    
      "cross_sell_ids": [],
    
      "parent_id": 0,
    
      "purchase_note": "",
    
      "categories": [
    
        {
    
          "id": 9,
    
          "name": "Morena",
    
          "slug": "morena"
    
        },
    
        {
    
          "id": 14,
    
          "name": "Mujer",
    
          "slug": "mujer"
    
        }
    
      ],
    


    Corto ahí.... Lo que necesito es la ultima parte(categories), el JSON lo creo con:

      Dim JsonObject As Newtonsoft.Json.Linq.JObject = New Newtonsoft.Json.Linq.JObject()
                JsonObject.Add(New JProperty("name", mydatos.name))
                JsonObject.Add(New JProperty("slug", mydatos.slug))
                JsonObject.Add(New JProperty("type", mydatos.type))

    Pero no consigo crear un array o coleccion con la libreria Newtonsoft

    Tengo una clase llamada Categories donde tengo las propiedades que necesito. id, name y slug.
    Creo una Lista y lleno los datos:

         Dim MyCategories As New List(Of Categories) From
            {
                New Categories With {.id = 1, .name = "Mujer", .slug = "mujer"},
                New Categories With {.id = 3, .name = "morena", .slug = "Morena"}
            }

    El problema lo tengo con la funcion JArray, no consigo crearlo...me da error en el codigo al pasarlo de C# a .Net

    Saludos.



    lunes, 18 de mayo de 2020 11:08

Respuestas

  • Hay una solución más sencilla: define una clase que tenga todas las propiedades que quieres agregar en el JSON, incluyendo una propiedad llamada "categories" de tipo List(Of Categories). Mete los datos en esta clase, y luego conviértela en JSON usando

    Dim json as String = JsonConvert.SerializeObject(laInstanciaDeLaClase)

    Este truco funciona tanto en C# como en VB.NET, y te da de golpe el JSON deseado sin tenerte que preocupar de construir el JsonObject paso por paso.

    • Marcado como respuesta J.Ramon martes, 19 de mayo de 2020 9:17
    lunes, 18 de mayo de 2020 12:59

Todas las respuestas

  • Hay una solución más sencilla: define una clase que tenga todas las propiedades que quieres agregar en el JSON, incluyendo una propiedad llamada "categories" de tipo List(Of Categories). Mete los datos en esta clase, y luego conviértela en JSON usando

    Dim json as String = JsonConvert.SerializeObject(laInstanciaDeLaClase)

    Este truco funciona tanto en C# como en VB.NET, y te da de golpe el JSON deseado sin tenerte que preocupar de construir el JsonObject paso por paso.

    • Marcado como respuesta J.Ramon martes, 19 de mayo de 2020 9:17
    lunes, 18 de mayo de 2020 12:59
  • Alberto Poblacion

    MUCHAS GRACIAS!

    martes, 19 de mayo de 2020 9:18
  • Otra cosa que vi muy interesante es copiar el Json y Edicion > pegado especia
    Automaticamente te crea la clase... Increible!

    martes, 19 de mayo de 2020 9:24