Iterare risposta Json

di il
11 risposte

Iterare risposta Json

Sto sviluppando un servizio con architettura Rest che riconosca alcune persone da un file video e restituisca un json in risposta con alcune informazioni su ogni faccia rilevata.
Tipo cosi:

{
  “Persone”: [
          {
             “face_id”: “1”, 
             “nome”: “Marco”
          },
          {
             “face_id”: ”2”, 
             “nome”: “Anna”
           }
        ]
}

Tralasciando la parte del riconoscimento delle persone che viene effettuato tramite rete neurale già addestrata con un dataset apposito, il problema è:
Come faccio a comporre il json iterando le informazioni per ogni persona (quindi faccia) rilevata?

11 Risposte

  • Re: Iterare risposta Json

    Forse non ho capito la domanda, ma basta un json.dumps(obj) per serializzare un oggetto in formato json.
  • Re: Iterare risposta Json

    Mi sa che non mi sono spiegato bene!
    In pratica, da codice python vorrei creare e quindi restituire un Json simile a quello che ho scritto nel post precedente.

    Come faccio se ho un video con 2 o più facce a restituire un JSON che contenga le informazioni PER OGNI persona e quindi faccia rilevata?
  • Re: Iterare risposta Json

    Ora è chiaro, hai problemi nell'analizzare la risposta della parte che effettua il riconoscimento delle persone.
    Per aiutarti dovresti postare una risposta tipo.
  • Re: Iterare risposta Json

    È il json del primo post una risposta tipo
  • Re: Iterare risposta Json

    Premesso che non ho ben capito quale sia il tuo problema, in Python crei la tua struttura dati, la passi a
    json.dumps(dati)
    ed ottieni il json corrispondente.
    Non c'è una gran differenza tra una struttura dati composta da dizionari, array ed altro ed un json. Ad esempio, per sapere il nome della seconda persona:
    volti = json.loads(volti.json)	# volti.json è la risposta da 'deserializzare'
    print(volti["Persone"][1]["nome"])	# restituisce "Anna"
    
    Se invece il problema è creare la struttura dati, parti così:
    volti = {'Persone':[]}
    volti['Persone'].append({'face_id': '1', 'nome': 'Marco'})
    volti['Persone'].append({'face_id': '2', 'nome': 'Anna'})
    volti
    {'Persone': [{'face_id': '1', 'nome': 'Marco'}, {'face_id': '2', 'nome': 'Anna'}]}
    
  • Re: Iterare risposta Json

    Esatto... il problema è creare la struttura dati.
    Cioè deve essere iterativa.
    Nell’immagine che leggerá potrebbero esserci 1 o 20 o 50 ecc... facce... quindi non si sa a priori quante facce ci saranno
  • Re: Iterare risposta Json

    La lista dei dizionari dei volti può essere lunga a piacere (della memoria, s'intende...), basta che fai un
    while 'ci sono volti':
    	volto = {'face_id': id_trovato, 'name': nome_trovato}
    	volti['Persone'].append(volto)
    volti_json = json.dumps(volti)
  • Re: Iterare risposta Json

    Ma le chiavi dei dizionari non sono univoche?
    Quindi se capita lo stesso valore?
  • Re: Iterare risposta Json

    Mistergsk ha scritto:


    Ma le chiavi dei dizionari non sono univoche?
    Quindi se capita lo stesso valore?
    Se viene inserita una chiave già esistente, la chiave viene aggiornata.
  • Re: Iterare risposta Json

    Eh ma quindi se la chiave è sempre la stringa “id” per ogni persona non va bene...
    Comunque hai un pvt
  • Re: Iterare risposta Json

    Mistergsk ha scritto:


    Eh ma quindi se la chiave è sempre la stringa “id” per ogni persona non va bene...
    Comunque hai un pvt
    Ho letto il messaggio. Appena posso ti rispondo.
    Nel tuo caso la struttura dati (quella che hai postato qui) è composta da un array di dizionari, per cui ci possono essere infinite ripetizioni, perché ogni volto riconosciuto è un dizionario a sé stante.
Devi accedere o registrarti per scrivere nel forum
11 risposte