La JavaScript Object Notation è un formato per lo scambio di dati. In JavaScript esiste la classe JSON che espone dei metodi per leggere / convertire il JSON.

Un valore espresso in JSON è una stringa che non può contenere commenti nè virgole finali negli array e oggetti.

JSON.parse()

Il metodo JSON.parse() prende in ingresso come parametro una stringa di JSON, la analizza e la converte in valori:

var stringaJSON = '{"nome":"Mario","cognome":"Rossi","anni":20,"amici":["Luca","Giovanni"],"uomo":true,"lavoro":null,"stipendio":0,"sorella":{"nome":"Maria","cognome":"Rossi"}}';

var stringaConvertita = JSON.parse(stringaJSON);

console.log(stringaConvertita);
//{
//    nome: "Mario",
//    cognome: "Rossi",
//    anni: 20,
//    amici: ["Luca", "Giovanni"],
//    uomo: true,
//    lavoro: null,
//    stipendio: 0,
//    sorella: {
//        nome: "Maria",
//        cognome: "Rossi"
//    }
}

JSON.stringify()

Il metodo JSON.stringify() prende in ingresso come parametro un valore JavaScript e la trasforma in una stringa JSON:

var oggetto = {
    nome: "Mario",
    cognome: "Rossi",
    anni: 20,
    amici: ["Luca", "Giovanni"],
    uomo: true,
    lavoro: null,
    stipendio: 0,
    sorella: {
        nome: "Maria",
        cognome: "Rossi"
    }
}

var oggettoConvertito = JSON.stringify(oggetto);

console.log(oggettoConvertito); //{"nome":"Mario","cognome":"Rossi","anni":20,"amici":["Luca","Giovanni"],"uomo":true,"lavoro":null,"stipendio":0,"sorella":{"nome":"Maria","cognome":"Rossi"}}

//sintassi scorretta:
var arr = [1, 2, 3,]; //la virgola dopo il 3 non ci va

//Attenzione!!
JSON.stringify({
    nome: 'Mario',
    cognome: null,
    anni: undefined, //gli undefined sono ignorati
});

// {"nome":"Mario","cognome":null}