Json zu Mehrfachauswahlfeld
Ich bekomme durch API eine Json Rückgabe:
{"id":4805,"name":"Produkt","slug":"produkt-2","permalink":"https://www.sonneamwerk.de/produkt/produkt-2/","date_created":"2023-06-27T17:14:13","date_created_gmt":"2023-06-27T17:14:13","date_modified":"2023-06-27T18:00:04","date_modified_gmt":"2023-06-27T18:00:04","type":"simple","status":"publish","featured":false,"catalog_visibility":"visible","description":"<h1>acadcasdcvasdv</h1><div>dcsadcasd</div><div>adsvasdvas</div><div>asdvasdv</div><div><ol><li>Dachs</li><li>dscvsd</li><li>asdvsadv</li></ol><h1>dvddv</h1></div>","short_description":"","sku":"567","price":"20.00","regular_price":"20.00","sale_price":"","date_on_sale_from":null,"date_on_sale_from_gmt":null,"date_on_sale_to":null,"date_on_sale_to_gmt":null,"on_sale":false,"purchasable":true,"total_sales":0,"virtual":false,"downloadable":false,"downloads":[],"download_limit":-1,"download_expiry":-1,"external_url":"","button_text":"","tax_status":"taxable","tax_class":"","manage_stock":false,"stock_quantity":null,"backorders":"no","backorders_allowed":false,"backordered":false,"low_stock_amount":null,"sold_individually":false,"weight":"","dimensions":{"length":"","width":"","height":""},"shipping_required":true,"shipping_taxable":true,"shipping_class":"","shipping_class_id":0,"reviews_allowed":false,"average_rating":"0","rating_count":0,"upsell_ids":[],"cross_sell_ids":[],"parent_id":0,"purchase_note":"","categories":[{"id":15,"name":"KALENDER","slug":"kalender"},{"id":53,"name":"MÖBEL","slug":"moebel"},{"id":37,"name":"POSTER","slug":"poster"}],
Ich habe ein Textfeld "Kategorien" durch ein Befehl Kategorie := response.result.text(categories) bekomme ich im Textfeld den Array als Text [{"id":15,"name":"KALENDER","slug":"kalender"},{"id":53,"name":"MÖBEL","slug":"moebel"},{"id":37,"name":"POSTER","slug":"poster"}]
Jetzt die Frage ist es Möglich das dieser Json in ein Mehrfachauswahlfeld übertragen wir und die Kategorien ausgewählt sind.
Bin Dankbar für jede Hilfe.
14 Antworten
-
Moin ,
in ein normales Mehrfachauswahlfeld wohl nicht. Du kannst es über ein dynamisches MFAWF machen, indem du eine Tabelle Kategorien anlegst und im Produkt das dynamische MFAWF mit select Kategorien definierst
Dann die json-kategorien dem dynamischen MFAWF im Produkt-Datensatz zuordnest
VG Ronald
-
Ich sehe aus den bisherigen Infos nicht, wo du den Json reinbekommst und verarbeitest. Wo auch immer, genau dort gehört eine Erweiterung des Codes hinzu.
Die Kategorien im JSON müssen gleichnamige Pendants in Datensätzen der Tabelle "Kategorien" haben für die eindeutige Zuordnung im dynMFAF.Die Zuordnung zum dynMFAWF erfolgt über die DatensatzNummer (Nr) in der Tabelle "Kategorien" über eine Schleife z.B. so:
'Mehrfachauswahl (dynamisch)' := for i in myMF do number(i) end;
Es fehlt noch die Zuweisung welche JSON-Kategorie welcher DatensatzNummer (Nr) entspricht.
Das schaue ich mir am WE in Ruhe an.
Oder es springt schon Jemand anderse mit einer Lösung ein ;-)VG Ronald
-
Leider bin ich mit meinem Problem nicht weitergekommen? Hat einer eine Idee wie ich das umsetzten kann. Hab schon zuviel Zeit mit ausprobieren verschenkt. Es hängt an einer Kleinigkeit die ich mit meiner Unwissenheit nicht hin bekomme. Kann mir einer Helfen. Vielen Dank. Das Problem ist in den vorherigen Post erklärt, wenn etwas unklar ist würde ich es mit einigen Fotos ergänzen.
Vielen Dank für jede Hilfe.
-
Ein Video zu meinem Problem.
-
dyn.Mehrfachauswahl := response.result.categories.number(Id)
Sofern es sich bei der im Response übertragenen Id um die von Ninox vergebenen Id des Records handelt und keine selbst vergebene ID ist.Ansonsten musst du durch das mit response.result.categories.number(Id) erstellte Array durch iterieren und über die der dynMAF zugrunde liegenden Tabelle die Ninox Record-Id's zusammensuchen und wieder in ein Number-Array zusammenfassen mit dem du die Werte des dyn.MAF setzt.
Das könnte so aussehen: (Datentypen beachten!!!)
let vresponse := response.result.categories.number(Id);
let vCnt := cnt(vresponse);
let vTbl := select Produkte;
let vID := [0];
for i in vresponse do
let xID := i.number(Id);
let dynID := first(vTbl [Id = xID]).number(Nr);
vID := array(vID, [dynID])
end;
Produkt := slice(vID, 1, vCnt + 1) -
let vSuch := response.result.status;
let dynID := first(select Bestellstatus where TextStatus = vSuch).number(Nr);
'Auswahl (Dynamisch)' := dynID
Content aside
- Status Answered
- vor 1 JahrZuletzt aktiv
- 14Antworten
- 160Ansichten
-
2
Folge bereits