decode file json

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao a tutti.
ho un file .json cosi costituito:

JSON:
[
    {
        "firstname": "test_nome",
        "lastname": "test_cognome",
        "pdf_link": "http:\/\/www.miosito.it\/stage-2018-cx\/marmo3\/pdf\/test_nome_test_cognome_5eef632ab3e3a.pdf",
        "stage": "{\"size\":{\"width\":\"800\",\"height\":\"500\"},\"materiale\":\"rosa\",\"decoration\":{\"type\":\"staffe\",\"count\":4,\"margin\":{\"top\":\"25\",\"left\":\"22\"}},\"items\":[{\"type\":\"Image\",\"path\":\"path1\",\"name\":\"https:\/\/www.miosito.it\/stage-2018-cx\/marmo3\/images\/path1\/img1.jpeg\",\"margin\":{\"top\":403,\"left\":348}},{\"type\":\"Image\",\"path\":\"path2\",\"name\":\"https:\/\/www.miosito.it\/stage-2018-cx\/marmo3\/images\/path2\/img12.jpeg\",\"margin\":{\"top\":404,\"left\":591}},{\"type\":\"Image\",\"path\":\"path4\",\"name\":\"https:\/\/www.miosito.it\/stage-2018-cx\/marmo3\/images\/path4\/img32.jpeg\",\"margin\":{\"top\":346,\"left\":128}},{\"type\":\"Image\",\"path\":\"path7\",\"name\":\"https:\/\/www.miosito.it\/stage-2018-cx\/marmo3\/images\/path7\/img1.jpg\",\"margin\":{\"top\":259,\"left\":659.5}},{\"type\":\"Image\",\"path\":\"path7\",\"name\":\"https:\/\/www.miosito.it\/stage-2018-cx\/marmo3\/images\/path7\/img2.png\",\"margin\":{\"top\":262,\"left\":411.5}},{\"type\":\"Image\",\"path\":\"path8\",\"name\":\"https:\/\/www.miosito.it\/stage-2018-cx\/marmo3\/images\/path8\/img1.jpeg\",\"margin\":{\"top\":208,\"left\":195}},{\"type\":\"Text\",\"text\":\"prova test 2\",\"margin\":{\"top\":84.99999999999997,\"left\":540.9999999999995},\"fontFamily\":\"Arial Narrow Bold\",\"fontSize\":\"25\"},{\"type\":\"Text\",\"text\":\"prova test 1\",\"margin\":{\"top\":64,\"left\":224.99999999999974},\"fontFamily\":\"sans-serif\",\"fontSize\":\"22\"}]}"
    }  
]
ora stò provando con queste istruzioni
PHP:
$string=file_get_contents('data.json', 'r');
$json_o=json_decode($string,true);
foreach($json_o as $p)
{
  echo 'Nome: '.$p[firstname]."<br>";
  echo 'Cognome: '.$p[lastname]."<br>";
  echo 'PDF: '.$p[pdf_link]."<br>";  
}
però non sò come accedere alle informazioni racchiuse dentro al tag "stage".
Per "accedere" intendo in modo separato.
dovrei ottenere:
base
altezza
materiale
poi per decoration
tipo -----> margin top, margine left
poi se tipo è Image , allora --------> nome del file ,margin top, margine left
infine se Type è Text --------> il testo,margin top, margine left,fontFamily,fontSize

qualcuno mi può aiutare ?
grazie a tutti in anticipo
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Abbastanza facile scorrere stage con un nuovo ciclo....
PHP:
foreach($json_o as $p)
{
  echo 'Nome: '.$p[firstname]."<br>";
  echo 'Cognome: '.$p[lastname]."<br>";
  echo 'PDF: '.$p[pdf_link]."<br>"; 

    foreach($p['stage'] as $k=>$v){
        echo $k.':'.$v.'<br>';
    }

}
 

solari77

Utente Attivo
6 Ott 2016
119
1
18
ciao e grazie per la risposta.

mi da Warning: Invalid argument supplied for foreach() alla riga --->foreach($p[stage] as $k=>$v)
sia mettendo
foreach($p['stage']
con apici che
foreach($p[stage]
senza apici
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
con apici che
foreach($p[stage]
senza apic
Sicuro che si chiami in quel modo e che soprattutto sia presente l'i-esimo elemento controllato???

altrimenti dovresti verificare per ogni elemento l'esistenza di stage in questo modo...
PHP:
foreach($json_o as $p)
{
  echo 'Nome: '.$p[firstname]."<br>";
  echo 'Cognome: '.$p[lastname]."<br>";
  echo 'PDF: '.$p[pdf_link]."<br>";


   if(isset($p['stage']))
      {
       foreach($p['stage'] as $k=>$v){
             echo $k.':'.$v.'<br>';
    }
}

}
 

solari77

Utente Attivo
6 Ott 2016
119
1
18
ciao il file json è quello che ho indicato nel primo post. " stage" è presente.
ho aggiunto altri dati al json senza "stage". In questo caso con l'ultimo codice che mi hai inviato, dove non è presente stage non da nessun errore , mentre dove è presente "stage" continua a dare l'errore: Warning: Invalid argument supplied for foreach() .
ti allego il file .json , magari per capire meglio
 

Allegati

  • data.zip
    968 bytes · Visite: 267

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Ok... prova con questo
PHP:
$json_o=json_decode(file_get_contents('data.json'),true);
function print_rR($data){
   if(is_array($data)){
      foreach ($data as $k=>$v){
         if(is_array($v))print_rR($v);
         else{
            echo $k.':'.$v."\r\n";
         }
      }
   }
}

foreach($json_o as $p)
{
   echo 'Nome: '.$p['firstname']."<br>";
   echo 'Cognome: '.$p['lastname']."<br>";
   echo 'PDF: '.$p['pdf_link']."<br>";

   if(isset($p['stage']))
   {
      print_rR(json_decode($p['stage'],true));
   }
}
 

solari77

Utente Attivo
6 Ott 2016
119
1
18
ciao e ancora grazie per la cortese risposta.
ora non dà più l'errore.
L'unica cosa è che esce una stringa comprensiva di tutto, mentre io dovrei dividere per le varie etichette.
Come scritto all'inizio, non sò come estrarre in modo separato
base .......
altezza ......
materiale ........
poi per decoration
tipo -----> margin top ...... , margine left ..............
poi se tipo è Image , allora --------> nome del file ........... ,margin top ............, margine left ............
infine se Type è Text --------> il testo .............,margin top ..........., margine left .............,fontFamily ..........,fontSize .........
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
L'analisi del json non l'ho fatta, quindi per chiavi custom dovresti essere tu a scorrere l'array per come ti serve!
 

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ok, questo è quello che chiedevo all'inizio del post. Non so' come accedere alle varie chiavi di "stage"
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Json decode PHP 2
E fpdf salvare e aprire il file PHP 4
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
felino [Windows 10] Scompare icone, file e collegamenti sul desktop Windows e Software 0
S passare un valore da un form a un file .php con metodo post PHP 4
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
G file CSS contenente variabili HTML e CSS 1
M Creare traccia di download file sul server HTML e CSS 2
I elimina file PHP 1
I cerca file sottocartella unlink file PHP 0
I sessione username scarica file PHP 1
S Aggiornare percorso file collegati MS Access 0
I lista file sottocartella elimina file PHP 3
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
I visualizza file sottocartella elimina singolo file PHP 1
I caricamento file in sottocartella nome utente PHP 3
I cartella sottocartella apri o scarica file pdf PHP 1
K Sfondo nuovo file Photoshop 0
C Wp-admin a file php WordPress 5
G Importazione file .sql Web Server 0
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
MarcoGrazia HTML5 <picture> e i file source HTML e CSS 2
MarcoGrazia criptare un file PHP 2
U Link a doppio file PHP PHP 0
U Link a pagina ed esecuzione file PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
I Documento file word Java 0
FDF182 file .bin nell' email PHP 0
E Sito violato, file modificati, cartelle create WordPress 1
F LETTURA FILE SU DIRECTORY IN RETE Javascript 0
Y Percorso assoluto file immagine HTML e CSS 9
M Durata di un file MP4 Classic ASP 1
L problema collegamento file css con html HTML e CSS 1
otto9due Proteggere file caricati dall'esterno ma renderli accessibili per gli utenti loggati. PHP 4
Y Problema percorso file in rete PHP 1
otto9due Impedire esecuzione diretta dei file PHP 7
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
keyascii File temporanei Sessioni PHP 6
T Come esportare Thunderbird MBOX in file PST di Outlook? Windows e Software 2
K File audio in html, chi mi può aiutare? HTML e CSS 0
K Aiuto con file audio in html HTML e CSS 1
Antonio67 Lanciare file shell bash da html HTML e CSS 2
G leggere file txt e stampare con php il contenuto a video PHP 7
L Modifica file upload in ASP Classic ASP 2
Cosina mostrare contenuto da file txt PHP 2
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
M Inviare un file su un server remoto con JavaScript Javascript 0

Discussioni simili