Ele te persegue há tempos; está alí, pronto para te matar facilitar a vida… sim o JSON está aí, há muito tempo para te ajudar. O JavaScript Object Notation (ou JSON) segundo a wikipedia “… é um formato leve para intercâmbio de dados computacionais. JSON é um subconjunto da notação de objeto de JavaScript, mas seu uso não requer Javascript exclusivamente.”. Tem aplicação desde a manutenção de código javascript até em interface com bancos NoSQL, como o CouchDB e o MongoDB, e mais…

JSON é subconjunto do padrão ECMA-262 3ª edição (ou seja, desde Dezembro de 1999). o site json.org foi ao ar em 2002. Três anos depois o Yahoo disponibilizou alguns de seus serviços no formato; o Google um ano depois do concorrente com o GData.

Basicamente o JSON descreve informação. No Javascript você define suas variáveis com Json:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
var _boolean = true;
var _integer = 42;
var _float = 1.54;
var _string = "Esta é uma string";
var _null = null;
var _array = [1,2,3];
var _objeto = {
  "id": 1234,
  "nome": "Duodraco",
  "telefones": [5252525, 88833322],
  "ativo":true
}

Sim, os dados escalares também são considerados JSON, afinal os inteiros e strings são objetos para o Javascript, e o JSON é simplesmente a notação. Veja que objetos e arrays podem conter em seus elementos/atributos outros tipos descritos no formato (strings, floats, outros arrays ou objetos, etc…).

Tendo o domínio do formato, a evolução da sua calvície vai desacelerar (não vai parar, até porque o IE está aí pra isso). Você tem em suas mãos uma ferramenta quase que divina para a organização e legibilidade, nativa e fácil de usar.

É humanamente compreensível e serve muito bem no PHP, seja como arquivo de configuração, transporte de dados ou qualquer outra coisa. Existem as seguintes funções desde o PHP 5.2: json_encode e json_decode, que retornam respectivamente uma string em formato JSON — dado um valor PHP — e o outro um valor PHP — dada uma string JSON. Vale lembrar que o json_decode interpretará o json de maneira estrita, ou seja, nada de atributos do objeto sem aspas, ou objetos com vírgulas a mais.
A função json_encode tem um 2º parâmetro desde o PHP 5.3, que refere-se a opções para a “tradução” do valor php para a string json: com JSON_FORCE_OBJECT o retorno será sempre um objeto, caso o valor passado seja um array, por exemplo, e com JSON_HEX_QUOT sua string virá com possíveis aspas nos valores de atributos ou itens do array escapados.

1
2
3
4
5
6
7
<?php
$obj = [
  'name' => 'Xpto é melhor que "foo"',
  'id' => 256
];
echo json_encode($obj,JSON_HEX_QUOT | JSON_FORCE_OBJECT);
//{"name":"Xpto é melhor que u0022foou0022","id":256}

JSON é também o formato da resposta que alguns bancos de dados orientados a documento, como MongoDB e CouchDB, geralmente devolvem para seus clientes.

Só posso dizer: domine o formato, pois ele está aí para ser usado. É simples e rápido. No PHP você não precisa de nada a mais para interpretá-lo. Em aplicações web com HttpRequests que você utiliza XML aberto, prefira o JSON: é muito mais leve.

Não tenha medo!