Ga naar inhoud

Json API opbouw


Samsup

Aanbevolen berichten

Beste mensen,  Gister zulke goede tips gehad met het correct krijgen van mn cURL formatting dat ik gelijk maar weer formatting een vraag drop. API calls geven echt ontzettend veel mogelijkheden, dus ik experimenteer wat af, maar ik loop toch vaak stuk op "stomme" details..  

Ik hoop dat waar ik nu tegenaanloop ook in die trend is..  Ik probeer een Json te maken om productdata te updatenrichting de woocommerce shop.  Om de 1 of andere reden lukt het me prima om first level items aan te passen ( description, price, dat soort dingen) , maar het gaat mis wanneer ik zaken in de meta_data aan wil passen.  Ik wil bijvoorbeeld role_based_pricing  aan kunnen passen (doel is om elke nacht een scriptje te laten lopen die de prijzen update op de website). 

Het probleem waar ik tegenaanloop is dat er dus een array is meta_data, waarvan array nummer 28 in het geval van mn test de juiste waarde bevat ( meta_data[28].value is de prijs die ik aan zou moeten passen.  

De Json binnen meta_data[28] ziet er als volgt uit:

{
    "id" : 175789,
    "key" : "product_role_based_price_distributor",
    "value" : "100"
}

Wat ik nu doe is deze Jsonsetelement:

JSONSetElement ( ""; 
["catalog_visibility" ; $published ; JSONString];
["stock_quantity" ; $stock ; JSONNumber];
["manage_stock"; True ; JSONBoolean];
["backorders"; "yes" ; 1];
["price"; Products::Price | Retail ex VAT ; 1];
["meta_data[28].value" ; Products::Price | Distributor ; JSONnumber];
["weight"; Products::Weight | KG ; 1]

)

 

Geeft de volgende Json: 

{
    "backorders""yes",
    "catalog_visibility""visible",
    "manage_stock"true,
    "meta_data": [
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        {
            "value"999
        }
    ],
    "price""341,5",
    "stock_quantity"24,
    "weight""15,34"

Echter werkt deze Json dus niet ( ook niet via Postman) 

Via postman werkt onderstaande Json wel naar verwachting: 

{
    "backorders""yes",
    "catalog_visibility""visible",
    "manage_stock"true,
    "meta_data": [{
        "key""product_role_based_price_distributor"
        "value"999
    }],
    "price""341,5",
    "stock_quantity"24,
    "weight""15,34"
}
}

alleen ik kom er niet uit hoe ik dit moet maken..  Kennelijk heeft de Json niet de array number nodig, maar de combinatie van de "key" en de "value", maar hoe krijg ik die samen gesteld in filemaker?  Ik haal uit alle documentatie dat je maar het juiste array number moet zien te vinden, maar postman flikt het hem zonder dat nummer, en juist aan de hand van de key.. 

Ik heb ook al eens geprobeerd om hem richting de Jsonsetelement richting meta_data[28].product_role_based_price_distributor en variaties hierop, maar dan krijg ik iets van 

{
    "backorders""yes",
    "catalog_visibility""visible",
    "manage_stock"true,
    "meta_data": {
        "product_role_based_price_distributor"999
    },
    "price""341,5",
    "stock_quantity"24,
    "weight""15,34"
}
Link naar reactie

Arrays nummeren van 0 opwaarts. Als je dus alleen het eerste object van een array wilt vullen, dan geef je een 0 op:

JSONSetElement ( ""; 
      ["catalog_visibility" 	; $published 	; JSONString ] ;
      ["stock_quantity" 	; $stock 	; JSONNumber ] ;
      ["manage_stock" 		; True 		; JSONBoolean ] ;
      ["backorders" 		; "yes" 	; JSONString ] ;
      ["price" 			; Products::Price | Retail ex VAT ; JSONNumber ] ; 
      ["meta_data[0]key" 	; "product_role_based_price_distributor" ; JSONString ] ; 
      ["meta_data[0]value" 	; Products::Price | Distributor ; JSONnumber ] ;
      ["weight" 		; Products::Weight | KG ; JSONNumber ]
)

Overigens zijn spaties en pipes niet aan te bevelen om in veld en relatienamen te gebruiken. Underscores zijn beter en handiger bij het omzetten naar andere syntaxen (denk sql en data-api etc.)

Link naar reactie

Potver zou het weer zo makkelijk zijn!  ik ga het proberen! 

Spaties en pipes weet ik, dit filemaker systeem is denk ik bijna 20 jaar oud, toen was dat nog niet zo n issue :D  Ik heb dit systeem ge-erfd van mijn vader, run nu het bedrijf, tijd is beperkt enzo, maar ik vind het leuk om te doen en leren. Zal de veldnamen op de lijst zetten ooit ook is doorheen te worstelen.  Mn prioriteit is een filemaker systeem te maken dat voor mij werkt, en niet andersom :D  

Link naar reactie

Getest en werkt weer keurig, ontzettend bedankt, was hier oprecht al meer dan een week mee aan het worstelen (naast mn mollie integratie :D)  

Ik begrijp niet helemaal hoe het werkt die arrays,  ik dacht dat de arrays op hun vaste plek terug moesten komen, maar kennelijk weet woocommerce dat dus te plaatsen onafhankelijk van de arraynumber.  Dit gaat weer wat deuren openen mbt het interactief krijgen van filemaker met woocommerce!  

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Antwoord op deze discussie...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...