Bin seit kurzem lernender Python Anfängerprogrammierer. Ich versuche via einer Webshop API Produkte automatisch zu aktualisieren. Bis jetzt konnte ich mich durchgooglen. Jetzt stehe ich total auf dem Schlauch und bnötige Hilfe.
Via requests versuche ich ein Key-Value Pair zu updaten, welches nur über den Index einer Array aktualisiert werden kann. Leider gelingt es mir nicht, dies richtig zu formatieren.
Hier erstmals mein Code, welcher funktioniert, um einen Json Key zu updaten, welcher nicht in einem Array steckt:
Es geht um das "data" Paket. Wie kann ich in diesem den nested Pfad einbinden? Folgendes habe ich versucht:import requests
import json
storeId = 'XXX'
productId = 'XXX'
data = {
"price": 1500
}
url = f"https://app.XXX.com/api/v3/{storeId}/pr ... {productId}"
querystring = {"token":"XXX"}
headers = {"Accept": "application/json"}
response = requests.request("PUT", url, headers=headers, params=querystring, data=json.dumps(data))
print(response.text)
Klar könnte ich einfach den kompletten Schlüsselwert von "options" senden. Jedoch ist die Information nicht konsistent. Sprich einmal befindet sich der Schlüssel priceModifier im Index 1 oder 2. Deshalb muss ich zuerst nach einer Schlüsselinformation suchen und herausfinden in welchem Index er steckt. Jedoch weiss ich eben nicht, wie ich einen eine Array mittels Indexnummer aktualisieren kann.data = {
"options/[0]/[0]/priceModifier": 30
}
Hier noch ein Beispiel wie die Daten aufgebaut sind (priceModifier gibt es in diesem Beispiel vier mal):
Ich versuche hier "priceModifier":60 zu aktualisieren.
"options": [
{
"choices": [
{
"priceModifier": 60,
"priceModifierType": "ABSOLUTE",
"text": "SERVIwicklung",
"textTranslated": {
"de_CH": "SERbwicklung",
"en": "SEng"
}
},
{
"priceModifier": 0,
"priceModifierType": "ABSOLUTE",
"text": "INTERN.com",
"textTranslated": {
"de_CH": "INTERcom",
"en": "INTERcom"
}
}
],
"defaultChoice": 1,
"name": "W\u00e4hngspaket:",
"nameTranslated": {
"de_CH": "W\u00e4hlspaket:",
"en": "Pleakage:"
},
"required": true,
"type": "RADIO"
},
{
"choices": [
{
"priceModifier": 0,
"priceModifierType": "ABSOLUTE",
"text": "2 Jahre Garantie",
"textTranslated": {
"de_CH": "2 Jahre Garantie",
"en": "2 year guarantee"
}
},
{
"priceModifier": 39.9,
"priceModifierType": "ABSOLUTE",
"text": "5 Jahre Garau00e4t",
"textTranslated": {
"de_CH": "5 Jaheuger\u00e4t",
"en": "5 year guvice"
}
}
],
"defaultChoice": 1,
"name": "W\u00e",
"nameTranslated": {
"de_CH": "W\u0",
"en": "Please"
},
"required": true,
"type": "RADIO"
}
],