Aktualisieren des Werts im Json-Objekt in Python


Patrick

Ich habe Probleme mit der Aktualisierung eines Werts in einem Json-Objekt.

import json

userBoard = '' #see example below. is loaded in a separate function
@app.get("/setItem")
def setItem():
id = request.args.get('itemId')
id = int(id[2:]) # is for instance 2

for item in json.loads(session['userBoard']):
    if item['id'] == id:
        item['solved']='true'
    else:
        print('Nothing found!')        
return('OK')

Beispiel für das json:

[{"id": 1, "name": "t1", "solved": "false"}, {"id": 2, "name": "t2", "solved": "false"}, {"id": 3, "name": "t3"}]

Wenn ich jedoch den Ausdruck des userBoards überprüfe, ist der Wert immer noch 'false'. Hat jemand eine Idee? Muss das irgendwie serialisiert werden? Habe schon vieles probiert aber es hat nicht geklappt...

Vielen Dank!

hinterlegt

Man könnte sagen, die Frage ist irgendwie spezifisch und es fehlen einige Informationen, um eine einfache Antwort zu geben. Ich werde also einige Annahmen treffen und eine Lösung vorschlagen.

Erstens idund inputsind Python-Integrationen und sollten nicht als Variablennamen verwendet werden. Ich werde diese Zeichenfolgen _absichtlich mit einem Präfix verwenden, damit Sie diese Namen noch sicherer verwenden können.

import json
from typing import List

json_ex = '[{"id": 1, "name": "t1", "solved": "false"}, {"id": 2, "name": "t2", "solved": "false"}, {"id": 3, "name": "t3"}]'
_id = 2  # for now a constant for demonstration purposes

def setItem(_input: List[dict]):    
    for item in _input:
        if (this_id := item['id']) == _id:  # requires python 3.8+, otherwise you can simplify this
            item['solved'] = 'true'
            print(f'Updated item id {this_id}')
        else:
            print('Nothing found!')

json_ex_parsed = json.loads(json_ex)  # this is now a list of dictionaries
setItem(json_ex_parsed)

Output:
Nothing found!
Updated item id 2
Nothing found!

Der Inhalt json_ex_parsedvor der Bewerbung setItem:

[{'id': 1, 'name': 't1', 'solved': 'false'},
 {'id': 2, 'name': 't2', 'solved': 'false'},
 {'id': 3, 'name': 't3'}]

und danach:

[{'id': 1, 'name': 't1', 'solved': 'false'},
 {'id': 2, 'name': 't2', 'solved': 'true'},  # note here has been updated
 {'id': 3, 'name': 't3'}]

Verwandte Artikel


Umwandlung des im LINQ-Objekt erstellten Werts

Chathwind Ich bekomme meine Liste ausgewählter Elemente auf, um DataGriddies zu mögen. using (REntities RAEntity = new REntities()) { var all = RAEntity.TBLM_PRODUCT.ToList<DataControllers.TBLM_PRODUCT>(); var selectionList = all.Where(x => x.PRODUCT_P

Abrufen des Werts vom Java-Lang-Objekt im Ruhezustand

user9985168 Ich habe eine Frage: public List<InvoiceItems> findAllBalance(String external_key) throws HibernateException { return (List<InvoiceItems>) session.createQuery("select SUM(i.amount) as amount, t.record_id from Accounts a, InvoiceItems i, T

C ++ - Das Aktualisieren des Werts im Zeiger wird überschrieben

Die dunkle Seite des Mondes Ich habe vor kurzem angefangen, C ++ zu lernen, und ich habe Probleme, einen Zeiger in meiner MovieKlasse zu aktualisieren . Ich habe das Gefühl, dass ich irgendwo in meinen Move / Copy-Konstruktoren ein Problem habe, habe aber stun

Abrufen des JSON-Werts im Anpassungsformat

Bharat Paudyal Ich habe ein JSON in diesem Format [ { "Property": "A", "Value": "1" }, { "Property": "B", "Value": "1" }, { "Property": "C", "Value": "0" }, ] Ich möchte die Daten

Ändern des Werts im Generics-Objekt in Java

Jack Ich habe vor kurzem damit begonnen, Generika in Java zu lernen, und ich verstehe die grundlegenden Konzepte von Generika. Eine Sache, die ich jedoch nicht verstehe, ist, dass ich nicht weiß, warum die folgende Methode nicht funktioniert: public class Gene