Json in python controllare se vuoto

Io sono sempre JSON via:

with open("config.json") as data_file:
    global data
    data = json.load(data_file)

E voglio controllare se il data["example"] è vuota o non.

  • Ok, qual’è la tua domanda? Hai provato qualcosa? Qual è il tuo campione di dati? Sapete come ottenere la lunghezza di una lista?
  • Id come per controllare se i dati[“esempio”] existist nel mio json, ma quando provo se i dati[“esempio”] == “” si dice di un errore
  • La tua domanda non è chiara. È difficile sapere se si sta cercando di verificare l’esistenza del tasto “esempio”, o la presenza di un valore con il tasto. Ho fatto del mio meglio con la mia risposta, ma in realtà si dovrebbe includere TUTTE le informazioni che ti possono (compresi errori e dintorni), del codice)
  • Ehi @PhilippKlos. Fantasia di marcatura delle risposte come la risposta corretta?

 

3 Replies
  1. 5

    "example" in data.keys() restituisce True o False, quindi questo sarebbe un modo per controllare.

    Così, dato JSON come questo…

      { "example": { "title": "example title"}}

    E dato il codice per caricare il file come questo…

    import json
    
    with open('example.json') as f:
    
        data = json.load(f)

    Il codice seguente restituisce True o False:

    x = "example" in data   # x set to True
    y = "cheese" in data    # y set to False
    • Non è nemmeno necessario il .keys(); in per impostazione predefinita per l’esistenza di chiavi in un dict.
    • un buon punto. Sono stato un po ‘ più esplicito, ma meno divinatori nel farlo. Potrai modificare la mia risposta
  2. 2

    Si può provare:

    if data.get("example") == "":
        ...

    Questo non genererà un errore, anche se la chiave "example" non esiste.

    Ciò che sta accadendo nel tuo caso è che data["example"] non è uguale a "", e in realtà non c’è nessun tasto "example" quindi, probabilmente stai vedendo un KeyError che è ciò che accade quando si tenta di accedere a un valore in un dict utilizzando una chiave che non esiste. Quando si utilizza .get("somekey"), se la chiave "somekey" non esiste, get() tornerà None e restituirà il valore altrimenti. Questo è importante notare perché se si fa un controllo come:

    if not data.get("example"): 
        ...

    questo passerà il test di se se data["example"] è "" o se la chiave "example" non esiste.

  3. 0
    if isinstance(data, dict) and "example" in data and data["example"] != "":
            # example exists and holds something

Lascia un commento