Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
JSON.Decode
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje JSON.Decode 
 
Hola a todos.
Al usar la función JSON.Decode para decodificar un texto json el resultado, según la ayuda de gambas, debería ser un Variant, lo cual es como decir que el resultado es cualquier tipo de valor.
Luego, dependiendo de la fuente a decodificar, esta función devuelve unas veces un Variant[] y otras una Collection, supongo que con otras fuentes de datos tal vez devuelva otro tipo de variable.
El caso es que el programa que intento hacer debería actuar de forma diferente si el valor de retorno es un Variant[] o un Collection.

Public Function Json2Csv(strJSON As String) As String '' Convierte un archivo en formato JSON a CSV.

    Dim strRaw As String
    Dim strCSV As String
    Dim vrt As Variant

    strRaw = File.Load(strJSON)
    strCSV = File.Dir(strJSON) &/ File.BaseName(strJSON) & ".txt"

    vrt = (JSON.Decode(strRaw))

    ' Aquí como saber si es Collection o Variant[]  ????
  
End
 


Un archivo json tiene los siguientes datos:
[ {
  "dato1" : "valor11",
  "dato2" : "valor12",
  "dato3" : "valor13"
}, {
  "dato1" : "valor21",
  "dato2" : "valor22",
  "dato3" : "valor23"
}, {
  "dato1" : "valor31",
  "dato2" : "valor32",
  "dato3" : "valor33"
  "dato4" : "valor34"
} ]
 

y otro los siguientes:
{
  "texto1": "cadena1",
  "texto2": "cadena2",
  "texto3": "cadena3",
  "campos": [
        {"idx":"fecha",
        "desc": "1234567890",
        "tipo": "string",
        "requ": true
    },
        {"idx":"nombre",
        "desc": "untexto",
        "tipo": "string",
        "requ": true
    },
        {"idx":"desc",
        "desc": "otrotexto",
        "tipo": "string",
        "requ": false    }
  ]
}
 


Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: JSON.Decode 
 
Prueba ésto.
Public Function Json2Csv(strJSON As String) As String '' Convierte un archivo en formato JSON a CSV.

    Dim strRaw As String
    Dim strCSV As String
    Dim vrt As Variant

    strRaw = File.Load(strJSON)
    strCSV = File.Dir(strJSON) &/ File.BaseName(strJSON) & ".txt"

    vrt = (JSON.Decode(strRaw))

    if vrt IS collection then
        ....
    else if vrt IS Variant[]
       ....
    endif
  
End
 

 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: JSON.Decode 
 
ok, la función, que lo que hace es extraer las collections de datos y recopilarlas en un objeto Variant[] quedo así.
Public Function Json2Csv(strJSON As String) As Variant[] '' Convierte un archivo en formato JSON a CSV.

    Dim strRaw As String
    Dim vrt As Variant
    Dim item As Variant
    Dim vrx As New Variant[]

    strRaw = File.Load(strJSON)

    vrt = (JSON.Decode(strRaw))

        For Each item In vrt
            Select TypeOf(item)
                Case gb.Object '16
                    If item Is Collection Then
                        vrx.Add(item)
                    Else
                        If item Is Variant[] Then
                            vrx.Insert(item)
                        Endif
                    Endif
            End Select
        Next
    Return vrx

End
 

Luego subiré un ejemplo de conversión.
Saludos y muchas gracias.
 



 
última edición por tincho el Sabado, 06 Abril 2019, 09:50; editado 2 veces 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: JSON.Decode 
 
Buenas noches a todos!

Ando intentando crear Una Collection que contenga una Array. para después pasarlo a JSON, alguien de los presentes lo ha logrado?

{
  "name": "Premium Quality",
  "type": "simple",
  "regular_price": "21.99",
  "description": "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum torto$
  "
short_description": "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.",
  "
categories": [
    {
      "
id": 9
    },
    {
      "
id": 14
    }
  ],
  "
images": [
    {
      "
src": "http://demo.com/uploads/2019/02/4548565352494-600x450.jpg"
    },
    {
      "
src": "http://demo.woothemes.com/uploads/sites/56/2013/06/T_2_back.jpg"
    }
  ]
}


Como podéis ver categories y images son arrays dentro de una collection.

Todo esto lo debo exportar a Json. Pero cuando hago el JSON.ToString, no me respeta las arrays dentro.

Gracias.
 



 
última edición por arubioc el Domingo, 14 Abril 2019, 09:03; editado 2 veces 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: JSON.Decode 
 
shordi escribió: [Ver mensaje]
Prueba ésto.
Public Function Json2Csv(strJSON As String) As String '' Convierte un archivo en formato JSON a CSV.

    Dim strRaw As String
    Dim strCSV As String
    Dim vrt As Variant

    strRaw = File.Load(strJSON)
    strCSV = File.Dir(strJSON) &/ File.BaseName(strJSON) & ".txt"

    vrt = (JSON.Decode(strRaw))

    if vrt IS collection then
        ....
    else if vrt IS Variant[]
       ....
    endif
  
End
 


interesante nunca he usado "Is"
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: JSON.Decode 
 
arubioc escribió: [Ver mensaje]
Buenas noches a todos!
Ando intentando crear Una Collection que contenga una Array. para después pasarlo a JSON, alguien de los presentes lo ha logrado?

Me pico la curiosidad con lo que comentas.
Hice esta función para codificar una colección en formato "texto" pero no logro que quede con la sintaxis json. Pero se acerca a lo que buscas.
Como podras ver uso JSON.Encode en vez de JSON.ToString
Public Function Var2Json(vrt As Variant) As String '' Convierte una coleccion en texto en formato JSON.

    Dim strOut As String
    Dim item As Variant

    For Each item In vrt
        strOut &= JSON.Encode(item) & "\n"
    Next
    Return strOut

End
 

 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Encode And Decode Fenriz07 Bases de Datos 0 Miercoles, 25 Enero 2012, 22:13 Ver último mensaje
Fenriz07
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron