Saltar al contenido
a black background with red and green letters

Crear json a Partir de otro json – Claris FileMaker

Esta función es para aquellos que desean simplificar y mejorar la legibilidad de datos en formato JSON. Al crear un nuevo JSON a partir de uno existente, podrás organizar la información de manera más clara y eficiente. Esto es esencial para desarrolladores y usuarios que buscan una representación más ordenada de los datos en sus aplicaciones y proyectos. Con esta función, podrás optimizar la estructura de tu JSON y asegurarte de que sea más fácil de entender y trabajar. Simplifica tu proceso de manipulación de datos con esta herramienta versátil.


Nombre : ParseaJsonFromJson
Parámetros: json 

Ejemplo: ParseaJsonFromJson( json )


¡Dona Conviértete en héroe!

/*
Descripción: Esta función parsea o crea un JSON partiendo de otro JSON.

NOTA:
 Formato de JSON que acepta es
{
    "cliente": [
        {
            "_id": "6254348ea30cb38e0a7415dd",
            "name": "Pepito Perez",
            "entity": "562a40f4d7e22e6744836c77",
            "DNI": "XXXXXXXB",
            "creationDate": "2022-04-11T14:00:46.731Z",
            "ccc": " XXXXXXXB"
         },
        {
            "_id": "6254348ea30cb38e0a7415da",
            "name": "Menganito Perez",
            "entity": "562a40f4d7e22e6744836ce7",
            "DNI": "XXXXXXXC",
            "creationDate": "2023-12-11T14:00:46.731Z",
            "ccc": " XXXXXXXC"
         }, 
     ]
}

*/

Let ( [
_res = "OK";
~ts =   While (
[

~dato = "";
~jsonNew = "" ;
~i = 0;
~e = 0;
~JSON = json;
~creationDate = "";
~amount = "";
~shortName = "";
~count = $numReg ;
~count2 = ""
];

~i < ~count ;

[

//cogemos el registro en el JSON segun su posición
~dato = JSONGetElement ( ~JSON ; "cliente["&~i&"]" );


//una vez que tenemos el registro, guardamos en variable
~creationDate = JSONGetElement ( ~dato ; ".creationDate" );

~amount =  Round ( Substitute ( JSONGetElement ( ~dato ; ".amount" ) ; "." ; "," )  ; 2 );

~shortName = JSONGetElement ( ~dato ; ".shortName" );

~id = JSONGetElement ( ~dato ; "._id" );

~i = ~i + 1;

//cuando es la primera vuelta el $$JSON esta vacio entonces ~count2 sera 0, co lo cual va a entrar en el primer caso de abajo

//cuando $$JSON tiene contenido es decir a partir de la segunda vuelta, entra en el segundo caso y va creando registro segun la posición que le indiquemos en el count2


~count2 = ValueCount ( JSONListKeys ( $$JSON ; "" ) );

$$JSON =

Case (

PatternCount ( ~creationDate ; "?" ) > 0 

or

PatternCount ( ~amount ; "?" ) > 0 

or

PatternCount ( ~shortName ; "?" ) > 0

or

PatternCount ( ~id ; "?" ) > 0

; $$JSON ;

IsEmpty ( $$JSON ) ;

JSONSetElement ( "[]" ;

                [ "["&~i-1&"].timeStamp" ; ~creationDate ; JSONString ] ;

                [ "["&~i-1&"].amount" ;  ~amount    ; JSONString ] ;

                [ "["&~i-1&"].shortName" ; ~shortName  ; JSONString ] ;

                [ "["&~i-1&"]._id" ; ~id  ; JSONString ];

                [ "["&~i-1&"]._index" ; "0"  ; JSONString ]

  );

JSONSetElement ( $$JSON  ;

                [ "["&~count2&"].timeStamp" ; ~creationDate ; JSONString ] ;

                [ "["&~count2&"].amount" ;   ~amount   ; JSONString ] ;

                [ "["&~count2&"].shortName" ; ~shortName  ; JSONString ] ;

                [ "["&~count2&"]._id" ; ~id  ; JSONString ];

                [ "["&~count2&"]._index" ; ~count2  ; JSONString ] 

  )

)

];

JSONFormatElements ( $$JSON )

)

¡Dona Conviértete en héroe!


Mira Otras funciones que te pueden Interesar

Ver Preferencias