NEWS
Inventwo Jason Table einstellen?
-
Moin, ich bin absolut neu beim Thema JSON und Javascript. Hab es aber jetzt tatsächlich geschafft mir über ein http request auf eine API zuzugreifen und mir die Tabelle in einen Datenpunkt zu schreiben.
Und jetzt steh ich wieder da und hab ein neues Problem:
Der Inhalt des Datenpunkte (Beispiel):
{ "total_count": 0, "pagination": { "current_page": 0, "per_page": 0, "total_pages": 0 }, "list": [ { "id": "string", "name": "string", "time": "string", "size": { "number": 0, "unit": "string" }, "info": { "type": "string", "id": "string", "title": "string", "uris": [ "string" ] }, "comments": 0, "flags": { "english": true, } }, ] }
Normalerweise stehen in dem Array "list" mehrre Elemente, hier jetzt nur eins als Beispiel für den Aufbau.
Nun möchte ich mir gernne alle Elemente untereianander in der VIS in einer JSON Table anzeigen lassen, aber nur 3 Spalten mit den Werten aus id(10), time(12) und type(18).
Ich habe in Klammern die Zeile aus dem Code oben dazu geschrieben, da ich nicht weiß wie ich verschachtelte Eigenschaften richtig deklarieren muss.
Ich hoffe ihr könnt mir folgen?
LG
Dicken -
@dicken sagte: nur 3 Spalten mit den Werten aus id(10), time(12) und type(18).
Vorschlag für Javascript-Adapter:
const idJSON = '...'; const idTab = '0_userdata.0...'; on(idJSON, function(dp) { const table = []; const list = JSON.parse(dp.state.val).list; for(const obj of list) { const objTable = { id: obj.id, time: obj.time, type: obj.info.type }; table.push(objTable); } setState(idTab, JSON.stringify(table), true); });
-
@paul53 Da tut sich leider garnichts, hab bei idJSON den Datenpunkt in dem der JSON Code steht reingeschrieben und bei idTab einen von mir vorher neu erstellen leeren.
War das so richtig?
-
@dicken sagte: War das so richtig?
Ja.
@dicken sagte in Inventwo Jason Table einstellen?:
Da tut sich leider garnichts
Hat sich der Inhalt des JSON-DP schon mal geändert, denn nur dann wird getriggert.
-
@paul53 Boah Meeegaaa
Vielen Dank, das hat funktioniert. Und da hab ich jetzt Stundenlang dran rumprobiert...
Will nich unverschämt sein, aber eine kleine Frage hätt ich noch
Beispiel:
type: obj.info.type
gibt mir zbsp:imdb:tt12345678
raus. Da würde ich gerne dasimdb:
wegschneiden, dass nurtt12345678
in den neuen Datenpunkt geschrieben wird.Kannst du mir sagen wie das geht?
LG
Dicken -
@dicken sagte: Da würde ich gerne das imdb: wegschneiden
Wenn es immer "imdb:" ist:
type: obj.info.type.substring(5)
-
@paul53 Danke, aber hat so leider nicht funtkioniert: Hab folgende Ausgabe in den Logs bekommen:
Error in callback: TypeError: obj.info.type.substring is not a function
Hab aber dann mal kurz gegoogelt und mit
type: obj.info.type.toString().substring(5)
funktioniert es komischerweise. Könntest du mir erklären warum? Weil obj.info.type ist ja laut dem Beispiel im ersten Beitrag ein string.
-
@dicken sagte: Weil obj.info.type ist ja laut dem Beispiel im ersten Beitrag ein string.
So ist es. Ist es nun eine Objekt? Dann vermisse ich aber die geschweiften Klammern.
-
@paul53 Naja, wenn ich das jetzt wüsste
Hab grade angefangen mich mit JSON zu beschäftigen. Ich hab das Beispiel grade nochmal mit dem Inhalt meines Datenpunktes verglichen, die Klammern sind alle genauso gesetzt wie im Beispiel.
Ich weiß nicht ob es vllt noch wichtig zu wissen ist aber beide manuell erstellten Datenpunkte sind vom Typ "json".
-
@dicken sagte: wenn ich das jetzt wüsste
Füge mal eine Log-Ausgabe ein, um zu sehen, was es ist:
for(const obj of list) { log(obj.info.type + ', type: ' + typeof obj.info.type);
-
@paul53 type: object steht da tatsächlich.
Ich hab das Beispiel jetzt mal in ein JSON Pathfinder geworfen: Vielleicht hilft das ja weiter um den Fehler zu finden mit der Klammer?list[0].id list[0].time list[0].info.type
-
@dicken sagt: type: object steht da tatsächlich.
Dann noch das Objekt selbst loggen:
for(const obj of list) { log(obj.info.type);
-
@paul53 Hier eine Ausgabe:
[ 'imdb:tt14305738' ]
-
@dicken
Also ein Array mit einem Element. Dann:type: obj.info.type[0].substring(5)
-
@paul53 sagte in Inventwo Jason Table einstellen?:
.type[0].substring(5)
Perfekt
Dankeschön, jetzt versuch ich erstmal alleine weiter
Will ja auch was lernen