Ciao a tutti!
Ho bisogno di convertire una piccola tabella in un elenco di array associativi, in cui ogni riga è un membro di quell'elenco ed è un array associativo con i nomi delle colonne come chiavi e i valori delle righe come valori.
Attualmente ho questo:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
listAA = {};
columnList = dt << Get Column Names( string );
For Each Row(
currentAA = Associative Array();
For Each( {columnName, index}, columnList, currentAA[columnName] = Column( dt, columnName ) );
Insert Into( listAA, currentAA );
);
//Check
listAA[1]["age"]
//:*/
listAA[1]["age"]
/*:
Column( "age" )
L'output non è un valore, ma un riferimento a una colonna. Quindi sembra che non funzioni quando si fa riferimento a una colonna usando Column(name) all'interno di For Each Row, solo nomi hardcoded come nell'indice di scripting:
For Each Row( :height = -:height );
Domande:
1. Esiste un modo semplice ed elegante per ottenere un elenco di AA da una tabella? In caso contrario, come dovrei modificare la mia versione attuale?
2. Come fare riferimento a una colonna in modo non codificato quando si utilizza "Per ogni riga"?
Grazie,
M.
Forse qualcosa del genere
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
collist = dt << Get Column Names(string);<BR />
l = {};
For Each Row(
aa = Associative Array(collist, dt[Row(), 0]);
Insert Into(l, aa);
);
Show(l);
Puoi anche salvarlo come .json e poi analizzarlo in AA
Names Default To Here(1);
path = "$TEMP/test.json";
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Save(path);
json_str = Load Text File(path);
Delete File(path);
l = Parse JSON(json_str);