O JSON pode ser criado a partir de Strings que devem seguir alguns padrões de notação para que o Compilador JavaScript consiga interpretá-las e criar uma estrutura complexa, ou seja, criar seu objeto.

A diferença entre criação do JSON a partir de métodos e a criação do JSON a partir de Strings está pura e claramente em sua origem de existência, pois a partir do momento que o objeto foi criado, não existem mais diferenças e sua utilização é igual para ambos os casos.

Abaixo segue um exemplo de criação de Objetos JSON a partir de Strings.

Listagem 5. Criação de Objetos JSON a partir de Strings.

var meuObj = eval('({' + "Retorno:{'Atributo1':'Valor1','Atributo2':'Valor2'}" + '})');
alert(meuObj.Retorno.Atributo1);
alert(meuObj.Retorno.Atributo2);

Vamos agora detalhar cada fase da composição da String.

O método JavaScript chamado “eval()” serve para que o Compilador JavaScript resolva a instrução da String JSON e crie o objeto.

A Composição da String é fragmentada em 3 partes.

1ª - Definir o objeto.

2ª - Definir o atributo.

3ª - Definir o valor.

No exemplo adotado, a definição do objeto está na fase “Azul” do código que representa “Retorno:{}”. Esta notação indica que retorno é um objeto complexo, uma estrutura. A definição do atributo está em “Cinza” e representa “ ‘Atributo1’ ”. O caractere “:” existente é a separação entre o atributo e seu valor, sendo assim o valor em “Laranja” é representado por “ ‘valor1’ “.

Repare que no exemplo aplicado, existem dois atributos nesta estrutura, sendo assim, caso exista a necessidade de múltiplos atributos é possível criá-los apenas adicionando novas chaves e valores separados por vírgula “,” conforme o exemplo.

Outra utilização de criação de JSON a partir de String é para definir não apenas estruturas com atributos únicos e sim também estruturas complexas com coleções/arrays.

Desta forma, para criar-se uma estrutura contendo um array segue-se o padrão apresentado abaixo:

Listagem 6 Criação de Objetos JSON com coleção/array a partir de Strings.

var meuObj = eval('({' + "Retorno:[{'Atributo1':'Valor1','Atributo2':'Valor2'},{'Atributo1':'Valor3',
'Atributo2':'Valor4'}]" + '})');
alert(meuObj.Retorno[0].Atributo1);
alert(meuObj.Retorno[1].Atributo2);

Repare que a diferença para o código anterior é pequena. Para definir-se uma coleção/array é necessário apenas abrir um colchete “[]“ entre a definição dos atributos o que nos fornecerá a definição de diversos grupos de atributos.

Assim podemos utilizar o mesmo conceito que aplicamos quando definimos os atributos podendo definir diversos separando-os por virgula fazendo agora com os grupos de atributos que sem encontram entre chaves “{}” separando estes grupos por virgulas “,” ficando desta forma: “{},{}”.

Deste modo, quando declarado um objeto ao qual possui dentro dele uma coleção esta, por sua vez, será acessada através de índices conforme mostra o código abaixo da definição do objeto:

“alert(meuObj.Retorno[0].Atributo1);”

Como fechamento do conceito de JSON, esta pratica pode ser aplicada em diversas soluções do dia-a-dia do desenvolvedor, desde o recebimento de valores enviados via String com notação JSON pelo código servidor, como criação de objetos dinâmicos utilizando parâmetros enviados às funções construtoras, enfim, a utilização varia da criatividade e necessidade de seu implementador.

Bom pessoal, espero que o artigo tenha sido bastante útil.

Nos vemos no próximo artigo.