Iterare risposta Json

di Anonimizzato26488 il
11 risposte
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

  • Forse non ho capito la domanda, ma basta un json.dumps(obj) per serializzare un oggetto in formato 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?
  • Ora è chiaro, hai problemi nell'analizzare la risposta della parte che effettua il riconoscimento delle persone.
    Per aiutarti dovresti postare una risposta tipo.
  • È il json del primo post una risposta tipo
  • 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'}]}
    
  • 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
  • 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)
  • Ma le chiavi dei dizionari non sono univoche?
    Quindi se capita lo stesso valore?
  • 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.
  • Eh ma quindi se la chiave è sempre la stringa “id” per ogni persona non va bene...
    Comunque hai un pvt
  • 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