JSON – introduzione e approfondimento - -oldpost-





JSON (JavaScript Object Notation) è un formato adatto per lo scambio dei dati in applicazioni client-server.
La semplicità di JSON ne ha decretato un rapido utilizzo specialmente nella programmazione in AJAX. Il suo uso tramite JavaScript, è particolarmente semplice, infatti l’interprete è in grado di eseguirne il parsing tramite una semplice chiamata alla funzione eval().
I tipi di dati supportati da questo formato sono: (booleani; interi, reali, virgola mobile;stringhe;array; oggetti (coppie chiave-valore); null)


Esempio di oggetto JSON:

Utilizzo in javascript:

Riga 1: Creazione dell’oggetto JSON
Riga 2: Parsing dell’oggetto JSON per renderlo accessibile in javascript
Riga 3: Utilizzo dei dati contenuti nell’oggetto JSON

Usare JSON con AJAX

Riga 1: creazione dell’oggetto ajax tramite XMLHttpRequest
Riga 2: Richiesta del file dati (json) tramite ajax , può essere uno script php o un file testo qualsiasi
Riga 3: Funzione da eseguire quando i dati sono pronti
Riga 4: Se l’operazione è stata completata con successo (readyState=4)
Riga 5: memorizziamo i dati nella variabile dati
Riga 8:
altrimenti viene visualizzato un messaggio di errore
Riga 10: Esecuzione della richiesta AJAX.

La maggior parte dei linguaggi di programmazione possiede un typesystem molto simile a quello definito da JSON per cui sono nati molto progetti che permettono l’utilizzo di JSON con altri linguaggi quali, per esempio: ActionScript, C, C#, Delphi, Java, JavaScript, Lua, Perl, PHP, Python, Ruby.

Approfondimenti : Json.org

Usare JSON con PHP

Ecco alcuni esempi che utilizzano la liberia JSON.php.

Creazione di un ‘oggetto’ JSON :

Riga 1: caricamento della libreria JSON.php
Riga 2: crezione dell’istanza
Riga 3: creazione di un array php da convertire in JSON
Riga 4: chiamata del metodo encode per creare ” l’oggetto ” JSON
Lettura di un ‘oggetto’ JSON

Riga 1: caricamento della libreria JSON.php
Riga 2: crezione dell’istanza
Riga 3: stringa php contente l’oggetto JSON.
Riga 4: chiamata del metodo decode per caricare ” l’oggetto ” JSON in PHP

 

17 pensieri su “JSON – introduzione e approfondimento - -oldpost-

  1. salve avrei la necessita di creare un file Jons di questo tipo
    {chiveX:valoreY,chiaveX+1:valoreZ} e via discorrendo ovvio che x e y cambiano. questo perch io estrapolo da un db dei dai che mi vengono forniti in questo modo {descProdotto:valoreX},{descProdotto:valoreX} ecc quindi cambia solo il valore. spero di essermi spiegato bene il linguaggio che utilizzo PHP

  2. ma e possibile creare un codice json al momento della richiesta??

    nel senso: io chiedo a questa pagina: json.php?ids=12345

    lo lo script nella pagina json mi legge il valore di ‘ids’ tramite get
    e cerca il record nel database e poi quando l’ha trovato scrive sulla pagina

    {
    “id”: “valore”,
    “nome”: “valore”,
    }
    perchè io ho provato ma viene fuori cosi:
    {“id”: “valore”,”nome”: “valore”}

    1. certo che puoi farlo, evidentemente sbagli qualcosa.
      Se usi php, per esempio dovresrti fare in questo modo :
      {“id”:”$id”,”nome”:”$nome”}
      dove $id e $nome sono valorizzati con i valori presenti nel DB e all’interno di un ciclo di lettura

          1. puoi fare in questo modo :
            echo “{‘id’:$id,’nome’:’$nome’}”;
            nota :
            1. gli apici esterni sono doppiapici
            2. quelli interni sono singoli apici
            3. nel primo caso ho omesso i singoli apici per il valore $id in quanto è un numero, quindi non è necessario racchiudere il valore.

  3. Ciao Gennaro,
    sto cercando di realizzare un’applicazione iphone per il pagamento della sosta automobilistica.Lato server ho un web service che espone dei metodi e a seconda della funzionalità(inizio sosta,fine sosta ecc…) chiamo il servizio che mi restituisce dei dati che devo visualizzare sul mio dispositivo.I dati possono essere passati al web service come oggetto json/jsonp(per le richieste cross domain)?Il web service mi può restituire le informazioni sempre in un oggetto json?
    Grazie

    1. Non capisco il problema, se sei tu a realizzare sia l’aps iphone che il web service, non dovresti avere problemi. Se la domanda era un consiglio per il protocollo di scambi dati tra apps iphone e servizi, personalmente, trovo che il json sia perfetto. Semplice, leggero e versatile.

  4. Ciao, sto cominciando a fare qualche applicazione per facebook, ma sono ancora agli inizi. Girando per la rete in cerca di aiuto, sono capitato nel tuo blog alchè mi sono detto: perchè non chiedere direttamente aiuto a chi ne capisce di più di me? :) Quindi ecco la domanda:
    Io utilizzavo questo metodo:

    $friends = $facebook->api_client->friends_get();

    per avere la lista degli amici. Ho dimenticato di dire che utilizzo PHP :)
    Leggendo nelle documentazioni facebook, ho visto che queste API verranno deprecate a favore delle più nuove GRAPH API. Ecco il mio problema. Ho letto che è semplicissimo accedere alle informazioni, tramite un semplice link del tipo:

    https://graph.facebook.com/me

    Ora ho letto da questo blog come poter gestire il risultato JSON. Ma come faccio a ricavarmelo? Nel senso, tu nel blog hai scritto:

    $input = "{ id:10, nome:'gennaro', racconti:['un eroe','indeciso'] , nascita:'23/5/1973' }";
    $value = $json->decode($input);

    Utilizzando appunto il valore JSON di INPUT e codificandolo in VALUE. Ma dato che io il valore “INPUT” devo ricavarmelo da una chiamata HTTPS (https://graph.facebook.com/me) che funzione devo utilizzare?

    Ho letto la risposta precedente, dove hai consigliato di scrivere:

    $friends = $facebook->api(%u201Cme/friends?fields=id,name,picture%u201D);

    ho provato, ma mi restituisce errore:
    Fatal error: Call to undefined method Facebook::api()

    come se il metodo “api” non esistesse….cosa sbaglio???

    Grazie mille

    1. analisi perfetta, hai commesso solo qualche piccolo errore ;)

      Devi utilizzare le nuove api, le trovi nel repository di GitHub (https://github.com/facebook/php-sdk)

      Nella nuova classe troverai il metodo api().

      Quindi potrai utilizzarle in questo modo :

      1. Ok, grazie per la rapidità. Ho scaricato l’SDK nuovo, l’ho collegato alla mia applicazione ed ecco che non mi funziona più nulla :)
        Siamo sicuri che queste nuove GRAPH siano migliori delle vecchie API????

        A parte questa mia considerazione del tutto personale, ho prova a capirci qualcosa, ed ho notato che cambia praticamente TUTTO! So di uscire fuori tema, ma non sapevo dove poter chiedere certe cose, sei l’unico che mi ha risposto in mesi di ricerche, quindi ne approfitto :D

        Cominciamo dall’autenticazione, prima mi bastava scrivere

        if ($_POST['fb_sig_in_canvas']){

        per controllare che si fosse già iscritti all’applicazione e nel caso usciva in automatico la finestrella per autorizzare l’applicazione per l’utente che aveva visitato l’applicazione stessa.
        Ora invece, c’è questo controllo:
        if ($facebook->getSession()) {

        fosse solo questo il problema :) lo cambio ed ecco che per far uscire il LINK per il LOGIN, devo scrivere questo:

        echo '<a href="' . $facebook->getLoginUrl() . '">Login</a>';

        tutto ok, mi esce il link LOGIN e mi aspetto che cliccando mi esca la famosa finistrella per dare le autorizzazioni alla mia applicazione…ma così non è!!! Mi esce solo la scritta:
        ERRORE
        errore di caricamento della pagina [nome mia applicazione]

        Cosa sbaglio? Tutto immagino :D Preciso che ho modificato nelle impostazioni della mia applicazione l’abilitazione all’OAuth 2.0 for Canvas (beta)

        Povero me….Grazie ancora….

        1. Ti rispondo qui, ma in genere mi piace avere le domande inerenti all’articolo (anche se siamo partiti dal json ;) )
          Comunque, il tuo approccio è giusto, solo che c’è un pò di confusione, ma è ovvio visto come son cambiate le cose.
          Presto scrivero un articolo per fare chiarezza.

          Nel tuo caso è probabile che non hai settato il tipo di applicazione a “iframe” (le apps di tipo fbml presto saranno deprecate).
          Quando si utilizza un iframe si è ovviamente in un iframe quindi devi mettere il target “_top” al link o meglio fai un redirect della pagina

          dove –loginUrl– è l’url che ti da la funzione $facebook->getLoginUrl().

          Spero nel weekend di trovare il tempo per scrivere l’articolo, altrimenti sarà il prossimo.

          ciao

  5. Ciao Gennaro, complimenti per tutte le info che dai..
    volevo chiederti un’informazione, se puoi.

    Sono alle prime armi con lo sviluppo di app per fb,
    volevo sviluppare una applicazione con le nuove API di Facebook, che a quanto ho capito utilizzano chiamate HTTP REST e ricevono risposte JSON.
    Per iniziare volevo elencare i miei amici..ma non riesco.
    Ho visto un po’ il codice di esempio: http://github.com/facebook/php-sdk/blob/master/examples/example.php

    ..ho creato l’app.. collegata e funziona con l’esempio linkato..
    ma non capisco come posso ottenere le info degli oggetti json( tipo https://graph.facebook.com/me/friends) dal mio index.php.

    In pratica volevo fare quello che nelle oldREST era un semplice friends.getLists.
    Potresti aiutarmi?

    Ti ringrazio in anticipo, Paolo

    1. Ciao,
      quello che devi fare e utilizzare la funzione api della classe facebook.
      Nel tuo caso, per ottenere la lista amici , puoi eseguire il seguente codice
      $friends = $facebook->api(“me/friends?fields=id,name,picture”);
      Che ti restiuisce un array di amici con le informazioni dei campi selezionati.

Rispondi a chicco Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *