こんにちは、みんな!
小さなテーブルを連想配列のリストに変換する必要があります。各行はリストのメンバーであり、列名をキー、行の値を値とする連想配列です。
現在、私はこれを持っています:
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" )
出力は値ではなく、列への参照です。そのため、For Each Row内でColumn(name)を使用して列を参照する場合には機能せず、スクリプティングインデックスのようにハードコードされた名前のみで実行できるようです。
For Each Row( :height = -:height );
質問:
1. テーブルからAAのリストを取得するシンプルでエレガントな方法はありますか?もしない場合、現在のバージョンをどのように変更する必要がありますか?
2. 「For Each Row」を使用するときに、ハードコードされていない方法で列を参照するにはどうすればよいですか?
ありがとう、
M.
こんな感じかな
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);
.jsonとして保存して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);