Saltar al contenido
black and yellow printed paper

Convertir Json en CSV FileMaker

Guao esta función me llevo por lo menos un par de días en hacerla, la intención era crear un JSON con los datos necesarios y luego transformarlo en un CSV para poder establecer campo para si poder exportar el CSV y poder abrirlo en Excel, No hace falta plugin.


Nombre : JsonToCsv
Parámetros: json

Ejemplo: JsonToCsv(json)

¡Dona Conviértete en héroe!

/*

Descripción: Esta función transforma un JSON a un CSV.

NOTA:

 Formato de JSON que acepta es

[

{id : xx},

{id : xy},

{id : xz},

]

el separador predeterminado es coma ( , )


Autor: www.Jteixcode.com

*/

Let ( [

_r = While (

[

    _json = json ;

      _i = 0;

      _reg = "";

      _cabecera = GetAsText ( Substitute ( JSONListKeys ( _json ; 0 ) ; "¶" ; "," ) )&"¶";

      _countjson = ValueCount( JSONListKeys ( _json ; "" ) );

      _lineanew = "";

      _csv = ""

] ;

      _i < _countjson ;

[

      _reg = JSONGetElement ( _json ; "[" & _i  & "]" );

      _i = _i + 1;

      _lineanew = While (

                    [

                    _keys = JSONListKeys ( _reg ; "" );                                                                                         
                    _countkey = ValueCount( _keys );

                    _linea = "";

                    _lineanew = "";

                    _valor = "";

                    _key = "" ;

                    _e = ""

                   ] ;

                     _e < _countkey ;

                   [

                   _e = _e + 1 ;

                   _key = GetValue ( _keys ; _e );

                   _valor = If ( IsEmpty ( JSONGetElement ( _reg ; _key )); "SD"; JSONGetElement ( _reg ; _key ) );

                  _linea = Case (

                           _e = 1 ; _valor&"," ;

                           _e = _countkey ; _linea&_valor&"¶";

                                _linea&_valor&"," );

                  _lineanew = Case (
                                                                                                        
                            _e = _countkey and IsEmpty ( _lineanew ) ; _linea ;

                            _e = _countkey and not IsEmpty ( _lineanew ) ; _lineanew &_linea )

  ] ;

                  _lineanew  );

    _csv = Case ( IsEmpty ( _csv ) ; _lineanew ; _csv & _lineanew )

] ;

   _cabecera&_csv

)

] ; _r )

¡Dona Conviértete en héroe!


Mira Otras funciones que te pueden Interesar

Ver Preferencias