Jump to content

Json API opbouw


Samsup

Recommended Posts

Posted

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"
}
Posted

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.)

Posted

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  

Posted

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!  

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...