Definieren Sie eine JSON-Struktur für den Datenaustausch, die die Eigenschaften von Tabellen und Spalten unterstütztGuten Morgen,
Ich arbeite an einer Standard-Datenaustauschstruktur, damit JMP und unsere anderen Anwendungen Daten austauschen können. Die native JSON-Funktion von JMP behandelt die Daten gut, bietet jedoch keine Optionen zum Speichern von Eigenschaften. Ich frage mich, ob jemand diese Übung bereits durchlaufen hat und bereit wäre, Ihnen mitzuteilen, wie Sie dazu gekommen sind?
Vielen Dank
Ray Bunkofske
Re: Definieren Sie eine JSON-Struktur für den Datenaustausch, die die Eigenschaften von Tabellen und Spalten unterstütztIn meinem Fall habe ich ein Associateve Array, das Werte und andere AAs und Listen enthält, die darin verschachtelt sind, und ich muss das an ein anderes System in einer JSON-Datei senden. Wenn Sie die gewünschten Eigenschaften als Liste oder AA erhalten können, können Sie sie möglicherweise an diese Funktion übergeben, oder Sie können sie an andere Strukturen anpassen.
Re: Definieren Sie eine JSON-Struktur für den Datenaustausch, die die Eigenschaften von Tabellen und Spalten unterstütztAndrew,
Vielen Dank, ich schätze den Aufwand sehr. Um dies zu verwenden, gebe ich einzelne Elemente an und bekomme sie in einer JSON-Struktur zurückgegeben?
Danke noch einmal
Re: Definieren Sie eine JSON-Struktur für den Datenaustausch, die die Eigenschaften von Tabellen und Spalten unterstütztIch habe schon ein Problem damit gefunden; Ich habe versucht, durch die Listen zu iterieren, als wären es assoziative Arrays. Das sollte besser funktionieren.// Serialize Associative Arrays, Lists, or nestings of them for JSON export (http://www.json.org/)
// Iterate through Associative Array keys or List, recurse on values.
// Use "Local" and "Recurse" to isolates scopes.
// https://www.jmp.com/support/help/13-2/Recursion.shtml
// http://www.jmp.com/support/help/Global_and_Local_Variables.shtml
// TODO: consider pretty formatting
// TODO: consider opiton to include/exclude empty Lists and AAs.
toJSON = Function( {input, depth=0, maxdepth=16},
Local( {output, current_item, num_list_items, list_item_count},
if (
depth > maxdepth,
Throw("toJSON recursion depth " || Char(depth) || " exceeds limit of " || Char(maxdepth)),
Is List(input),
output = "[";
num_list_items = N Items(input);
list_item_count = 0;
While (num_list_items > list_item_count,
list_item_count++;
output ||= Recurse(input[list_item_count], depth+1);
If (num_list_items > list_item_count, output ||= ",";);
);
output ||= "]",
Is Associative Array(input),
output = "{";
current_item = input << First;
// TODO: check value for Is Missing before adding key
While (Is Empty(current_item) == 0,
output ||= "\!"" || Char(current_item) || "\!":" || Recurse(input[current_item], depth+1);
current_item = input << Next(current_item);
If (Is Empty(current_item) == 0, output ||= ",";);
);
output ||= "}",
Is Number(input),
output = Char(input),
Uppercase(input) == "FALSE",
output = "false",
Uppercase(input) == "TRUE",
output = "true",
// else
output = "\!"" || Char(input) || "\!"",
);
// return:
output;
);
);Re: Definieren Sie eine JSON-Struktur für den Datenaustausch, die die Eigenschaften von Tabellen und Spalten unterstütztHi Ray,
Ich habe dies zusammengestellt, um einige Daten in JSON zu speichern. Keine Garantien, aber Sie können es gerne ausprobieren.
Prost
-und
// Serialize Associative Arrays, Lists, or nestings of them to JSON (http://www.json.org/)
// Iterate through Associative Array keys or List, recurse on values.
// Use "Local" and "Recurse" to isolates scopes.
// https://www.jmp.com/support/help/13-2/Recursion.shtml
// http://www.jmp.com/support/help/Global_and_Local_Variables.shtml
toJSON = Function( {input, depth=0, maxdepth=16},
Local( {output, current_item},
if (
depth > maxdepth,
Throw("toJSON recursion depth " || depth || " exceeds limit of " || maxdepth),
Is List(input),
output = "[";
current_item = input << First;
While (Is Empty(current_item) == 0,
output = output || Recurse(current_item, depth+1);
current_item = input << Next(current_item);
If (Is Empty(current_item) == 0, output = output || ",";);
);
output = output || "]",
Is Associative Array(input),
output = "{";
current_item = input << First;
While (Is Empty(current_item) == 0,
output = output || "\!"" || Char(current_item) || "\!":" || Recurse(input[current_item], depth+1);
current_item = input << Next(current_item);
If (Is Empty(current_item) == 0, output = output || ",";);
);
output = output || "}",
Is Number(input),
output = Char(input),
Uppercase(input) == "FALSE",
output = "false",
Uppercase(input) == "TRUE",
output = "true",
// else
output = "\!"" || Char(input) || "\!"",
);
// return:
output;
);
);