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.