Wir haben kürzlich JSL-Code erstellt, um Daten aus einem REST-API-Aufruf zu erfassen. Ich verwende derzeit Version 18.01 von JMP.
Unser Anwendungsentwickler hat ein Szenario erstellt, in dem wir für eine bestimmte Fertigungsabteilung die Daten in monatlichen Blöcken abrufen, um unnötigen Aufwand zu vermeiden. Wir decken Daten der letzten 24 Monate ab. Anschließend fassen wir die Daten jedes Monats in einer Datentabelle zusammen und führen unsere Analyse anschließend mit der vollständig ausgefüllten Datentabelle durch.
Letztendlich möchten wir diesen Bericht in JMP-Live veröffentlichen, und genau darin liegt unser Problem. Ich habe ihn schnell in JMP-Live veröffentlicht, wo der REST-API-Aufruf verwendet wird, aber er konnte nicht ausgeführt werden. Ich vermute, das liegt am JSON-Parser-Add-In, das wir in JMP geladen haben.
Im folgenden Code sehen Sie zwei kritische Zeilen, in denen das JSON-Parser-Add-In ins Spiel kommt …
// JSON analysieren und Tabelle erstellen
json = JSON:Parse(Ergebnis);
tempDT = JSON:Tabelle erstellen(json);
Gibt es vielleicht einen besseren Weg, unsere Endergebnisse zu erreichen, oder müssen wir das JSON-Parser-Add-In in der JMP-Live-Umgebung verfügbar machen?
Beste grüße,
John
Names Default To Here(1);
// Create empty Combined Results table
finalTable = New Table("Combined Results");
// Loop through month offsets
For(month = 1, month <= 24, month++,
Try(
// Build and send request
request_url = "https://XXXX-XXX.XXXXXXX.net/XXXX/api/xX.X.X./XXX/dept/dt/month_offset/" || Char(month) || "/met_test_results" ;
result = New HTTP Request(URL(request_url), Method("GET")) << Send;
// Parse JSON and build table
json = JSON:Parse(result);
tempDT = JSON:Make Table(json);
// Append only if rows exist
If(NRow(tempDT) > 0,
// Add MonthOffset column
tempDT << New Column("MonthOffset", Numeric, Set Each Value(month));
// Append to final table
finalTable << Concatenate(tempDT, Append to First Table);
Write("Month " || Char(month) || ": Data added to Combined Results.\n");
,
Write("Month " || Char(month) || ": No data returned — skipping.\n");
);
// Always close the temp table
Close(tempDT, NoSave);
,
Write("Skipping month offset " || Char(month) || " due to error or bad response.\n");
);
Wait (0.25) ;
);
// Show final table if it has any rows
If(NRow(finalTable) > 0,
finalTable << Set Name("Combined Results");
finalTable << Show Window,
New Window("No Data", Text Box("No valid data returned from selected months."))
);
// Assuming finalTable is already your active data table
dt = finalTable;Haben Sie sich JSON to Data Table() angesehen?
result = "\[[
{
"name" : "KATIE",
"age" : 12,
"sex" : "F",
"height" : 59,
"weight" : 95
},
{
"name" : "LOUISE",
"age" : 12,
"sex" : "F",
"height" : 61,
"weight" : 123
},
{
"name" : "LAWRENCE",
"age" : 17,
"sex" : "M",
"height" : 70,
"weight" : 172
}
]]\";
dt = JSON to Data Table( result );

Dieser Vorschlag hat in der JMP-Desktop-App hervorragend funktioniert, danke für die Hilfe.
Die Aktualisierung mit demselben Skript wie die Desktop-App in der JMP-Live-Umgebung schlug jedoch fehl. Leider gibt es noch viel zu tun!