JSON - Guia Rápido
JSON ou JavaScript Object Notation é um padrão aberto baseado em texto leve projetado para intercâmbio de dados legível por humanos. As convenções usadas pelo JSON são conhecidas pelos programadores, que incluem C, C ++, Java, Python, Perl, etc.
JSON significa JavaScript Object Notation.
O formato foi especificado por Douglas Crockford.
Ele foi projetado para o intercâmbio de dados legíveis por humanos.
Ele foi estendido da linguagem de script JavaScript.
A extensão do nome do arquivo é .json.
O tipo de mídia da Internet JSON é application/json.
O identificador de tipo uniforme é public.json.
Usos de JSON
Ele é usado ao escrever aplicativos baseados em JavaScript que incluem extensões de navegador e sites.
O formato JSON é usado para serializar e transmitir dados estruturados pela conexão de rede.
É usado principalmente para transmitir dados entre um servidor e aplicativos da web.
Os serviços da Web e APIs usam o formato JSON para fornecer dados públicos.
Ele pode ser usado com linguagens de programação modernas.
Características do JSON
- JSON é fácil de ler e escrever.
- É um formato de intercâmbio baseado em texto leve.
- JSON é independente do idioma.
Exemplo simples em JSON
O exemplo a seguir mostra como usar JSON para armazenar informações relacionadas a livros com base em seu tópico e edição.
{
"book": [
{
"id":"01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id":"07",
"language": "C++",
"edition": "second",
"author": "E.Balagurusamy"
}
]
}
Depois de entender o programa acima, tentaremos outro exemplo. Vamos salvar o código abaixo comojson.htm -
<html>
<head>
<title>JSON example</title>
<script language = "javascript" >
var object1 = { "language" : "Java", "author" : "herbert schildt" };
document.write("<h1>JSON with JavaScript example</h1>");
document.write("<br>");
document.write("<h3>Language = " + object1.language+"</h3>");
document.write("<h3>Author = " + object1.author+"</h3>");
var object2 = { "language" : "C++", "author" : "E-Balagurusamy" };
document.write("<br>");
document.write("<h3>Language = " + object2.language+"</h3>");
document.write("<h3>Author = " + object2.author+"</h3>");
document.write("<hr />");
document.write(object2.language + " programming language can be studied " + "from book written by " + object2.author);
document.write("<hr />");
</script>
</head>
<body>
</body>
</html>
Agora, vamos tentar abrir json.htm usando o IE ou qualquer outro navegador habilitado para javascript que produza o seguinte resultado -
Você pode consultar o capítulo Objetos JSON para obter mais informações sobre objetos JSON.
Vamos dar uma olhada rápida na sintaxe básica do JSON. A sintaxe JSON é basicamente considerada um subconjunto da sintaxe JavaScript; inclui o seguinte -
Os dados são representados em pares nome / valor.
Os colchetes prendem objetos e cada nome é seguido por ':' (dois pontos), os pares nome / valor são separados por, (vírgula).
Os colchetes contêm matrizes e os valores são separados por, (vírgula).
Abaixo está um exemplo simples -
{
"book": [
{
"id": "01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id": "07",
"language": "C++",
"edition": "second",
"author": "E.Balagurusamy"
}
]
}
JSON oferece suporte às duas estruturas de dados a seguir -
Collection of name/value pairs - Esta estrutura de dados é suportada por diferentes linguagens de programação.
Ordered list of values - Inclui matriz, lista, vetor ou sequência etc.
O formato JSON suporta os seguintes tipos de dados -
Sr. Não. | Tipo e descrição |
---|---|
1 | Number formato de ponto flutuante de precisão dupla em JavaScript |
2 | String Unicode com aspas duplas com escape de barra invertida |
3 | Boolean verdadeiro ou falso |
4 | Array uma sequência ordenada de valores |
5 | Value pode ser uma string, um número, verdadeiro ou falso, nulo etc. |
6 | Object uma coleção não ordenada de pares chave: valor |
7 | Whitespace pode ser usado entre qualquer par de tokens |
8 | null vazio |
Número
É um formato de ponto flutuante de precisão dupla em JavaScript e depende da implementação.
Os formatos octal e hexadecimal não são usados.
Nenhum NaN ou Infinity é usado em Number.
A tabela a seguir mostra os tipos de número -
Sr. Não. | Tipo e descrição |
---|---|
1 | Integer Dígitos 1-9, 0 e positivo ou negativo |
2 | Fraction Frações como 0,3, 0,9 |
3 | Exponent Expoente como e, e +, e-, E, E +, E- |
Sintaxe
var json-object-name = { string : number_value, .......}
Exemplo
Exemplo mostrando Number Datatype, o valor não deve ser colocado entre aspas -
var obj = {marks: 97}
Corda
É uma sequência de zero ou mais caracteres Unicode entre aspas duplas com escape de barra invertida.
Caractere é uma string de caractere único, ou seja, uma string com comprimento 1.
A tabela mostra vários caracteres especiais que você pode usar em strings de um documento JSON -
Sr. Não. | Tipo e descrição |
---|---|
1 | " aspas duplas |
2 | \ barra invertida |
3 | / barra |
4 | b backspace |
5 | f feed de formulário |
6 | n nova linha |
7 | r retorno de carruagem |
8 | t guia horizontal |
9 | u quatro dígitos hexadecimais |
Sintaxe
var json-object-name = { string : "string value", .......}
Exemplo
Exemplo mostrando tipo de dados de string -
var obj = {name: 'Amit'}
boleano
Inclui valores verdadeiros ou falsos.
Sintaxe
var json-object-name = { string : true/false, .......}
Exemplo
var obj = {name: 'Amit', marks: 97, distinction: true}
Array
É uma coleção ordenada de valores.
Eles estão entre colchetes, o que significa que a matriz começa com. [. e termina com.] ..
Os valores são separados por, (vírgula).
A indexação da matriz pode ser iniciada em 0 ou 1.
Os arrays devem ser usados quando os nomes das chaves são inteiros sequenciais.
Sintaxe
[ value, .......]
Exemplo
Exemplo mostrando matriz contendo vários objetos -
{
"books": [
{ "language":"Java" , "edition":"second" },
{ "language":"C++" , "lastName":"fifth" },
{ "language":"C" , "lastName":"third" }
]
}
Objeto
É um conjunto não ordenado de pares nome / valor.
Os objetos são colocados entre chaves, ou seja, começa com '{' e termina com '}'.
Cada nome é seguido por ':' (dois pontos) e os pares de chave / valor são separados por, (vírgula).
As chaves devem ser strings e devem ser diferentes umas das outras.
Os objetos devem ser usados quando os nomes das chaves são strings arbitrárias.
Sintaxe
{ string : value, .......}
Exemplo
Exemplo mostrando objeto -
{
"id": "011A",
"language": "JAVA",
"price": 500,
}
Espaço em branco
Ele pode ser inserido entre qualquer par de tokens. Ele pode ser adicionado para tornar o código mais legível. O exemplo mostra a declaração com e sem espaço em branco -
Sintaxe
{string:" ",....}
Exemplo
var obj1 = {"name": "Sachin Tendulkar"}
var obj2 = {"name": "SauravGanguly"}
nulo
Significa tipo vazio.
Sintaxe
null
Exemplo
var i = null;
if(i == 1) {
document.write("<h1>value is 1</h1>");
} else {
document.write("<h1>value is null</h1>");
}
Valor JSON
Inclui -
- número (inteiro ou ponto flutuante)
- string
- boolean
- array
- object
- null
Sintaxe
String | Number | Object | Array | TRUE | FALSE | NULL
Exemplo
var i = 1;
var j = "sachin";
var k = null;
Criação de objetos simples
Objetos JSON podem ser criados com JavaScript. Vejamos as várias maneiras de criar objetos JSON usando JavaScript -
- Criação de um objeto vazio -
var JSONObj = {};
- Criação de um novo objeto -
var JSONObj = new Object();
Criação de um objeto com atributo bookname com valor em string, atributo pricecom valor numérico. O atributo é acessado usando '.' Operador -
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
Este é um exemplo que mostra a criação de um objeto em javascript usando JSON, salve o código abaixo como json_object.htm -
<html>
<head>
<title>Creating Object JSON with JavaScript</title>
<script language = "javascript" >
var JSONObj = { "name" : "tutorialspoint.com", "year" : 2005 };
document.write("<h1>JSON with JavaScript example</h1>");
document.write("<br>");
document.write("<h3>Website Name = "+JSONObj.name+"</h3>");
document.write("<h3>Year = "+JSONObj.year+"</h3>");
</script>
</head>
<body>
</body>
</html>
Agora vamos tentar abrir o objeto Json usando o IE ou qualquer outro navegador habilitado para javaScript. Ele produz o seguinte resultado -
Criando Objetos Array
O exemplo a seguir mostra a criação de um objeto de array em javascript usando JSON, salve o código abaixo como json_array_object.htm -
<html>
<head>
<title>Creation of array object in javascript using JSON</title>
<script language = "javascript" >
document.writeln("<h2>JSON array object</h2>");
var books = { "Pascal" : [
{ "Name" : "Pascal Made Simple", "price" : 700 },
{ "Name" : "Guide to Pascal", "price" : 400 }],
"Scala" : [
{ "Name" : "Scala for the Impatient", "price" : 1000 },
{ "Name" : "Scala in Depth", "price" : 1300 }]
}
var i = 0
document.writeln("<table border = '2'><tr>");
for(i = 0;i<books.Pascal.length;i++) {
document.writeln("<td>");
document.writeln("<table border = '1' width = 100 >");
document.writeln("<tr><td><b>Name</b></td><td width = 50>" + books.Pascal[i].Name+"</td></tr>");
document.writeln("<tr><td><b>Price</b></td><td width = 50>" + books.Pascal[i].price +"</td></tr>");
document.writeln("</table>");
document.writeln("</td>");
}
for(i = 0;i<books.Scala.length;i++) {
document.writeln("<td>");
document.writeln("<table border = '1' width = 100 >");
document.writeln("<tr><td><b>Name</b></td><td width = 50>" + books.Scala[i].Name+"</td></tr>");
document.writeln("<tr><td><b>Price</b></td><td width = 50>" + books.Scala[i].price+"</td></tr>");
document.writeln("</table>");
document.writeln("</td>");
}
document.writeln("</tr></table>");
</script>
</head>
<body>
</body>
</html>
Agora, vamos tentar abrir o Json Array Object usando o IE ou qualquer outro navegador habilitado para javaScript. Ele produz o seguinte resultado -
Esquema JSON é uma especificação para formato baseado em JSON para definir a estrutura de dados JSON. Foi escrito sob o rascunho da IETF que expirou em 2011. JSON Schema -
- Descreve seu formato de dados existente.
- Documentação clara, legível por humanos e por máquina.
- Validação estrutural completa, útil para testes automatizados.
- Validação estrutural completa, validando dados enviados pelo cliente.
Bibliotecas de validação de esquema JSON
Existem vários validadores atualmente disponíveis para diferentes linguagens de programação. Atualmente, o validador de esquema JSON mais completo e compatível disponível é o JSV.
línguas | Bibliotecas |
---|---|
C | WJElement (LGPLv3) |
Java | json-schema-validator (LGPLv3) |
.INTERNET | Json.NET (MIT) |
ActionScript 3 | Frigga (MIT) |
Haskell | esquema-aeson (MIT) |
Pitão | Jsonschema |
Rubi | autoparse (ASL 2.0); rubi-jsonschema (MIT) |
PHP | php-json-schema (MIT). json-schema (Berkeley) |
JavaScript | Ordenado (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (BSD modificado ou AFL 2.0); schema.js. |
Exemplo de esquema JSON
Abaixo está um esquema JSON básico, que cobre uma descrição clássica do catálogo de produtos -
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer"
},
"name": {
"description": "Name of the product",
"type": "string"
},
"price": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
}
},
"required": ["id", "name", "price"]
}
Vamos verificar várias palavras-chave importantes que podem ser usadas neste esquema -
Sr. Não. | Palavra-chave e descrição |
---|---|
1 | $schema A palavra-chave $ schema afirma que esse esquema foi escrito de acordo com a especificação do rascunho v4. |
2 | title Você usará isso para dar um título ao seu esquema. |
3 | description Uma pequena descrição do esquema. |
4 | type A palavra-chave type define a primeira restrição em nossos dados JSON: tem que ser um objeto JSON. |
5 | properties Define várias chaves e seus tipos de valores, valores mínimos e máximos a serem usados no arquivo JSON. |
6 | required Isso mantém uma lista das propriedades necessárias. |
7 | minimum Esta é a restrição a ser colocada no valor e representa o valor mínimo aceitável. |
8 | exclusiveMinimum Se "exclusiveMinimum" estiver presente e tiver valor booleano true, a instância será válida se for estritamente maior que o valor "minimum". |
9 | maximum Esta é a restrição a ser colocada no valor e representa o valor máximo aceitável. |
10 | exclusiveMaximum Se "exclusiveMaximum" estiver presente e tiver valor booleano true, a instância será válida se for estritamente inferior ao valor de "maximum". |
11 | multipleOf Uma instância numérica é válida contra "multipleOf" se o resultado da divisão da instância pelo valor desta palavra-chave for um número inteiro. |
12 | maxLength O comprimento de uma instância de string é definido como o número máximo de seus caracteres. |
13 | minLength O comprimento de uma instância de string é definido como o número mínimo de seus caracteres. |
14 | pattern Uma instância de string é considerada válida se a expressão regular corresponder à instância com sucesso. |
Você pode verificar um http://json-schema.orgpara obter a lista completa de palavras-chave que podem ser usadas na definição de um esquema JSON. O esquema acima pode ser usado para testar a validade do seguinte código JSON -
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]
JSON e XML são formatos legíveis por humanos e são independentes de linguagem. Ambos têm suporte para criação, leitura e decodificação em situações do mundo real. Podemos comparar JSON com XML, com base nos seguintes fatores -
Verboso
XML é mais detalhado do que JSON, por isso é mais rápido escrever JSON para programadores.
Uso de matrizes
XML é usado para descrever os dados estruturados, que não incluem arrays, enquanto JSON inclui arrays.
Análise
O método eval do JavaScript analisa JSON. Quando aplicado a JSON, eval retorna o objeto descrito.
Exemplo
Exemplos individuais de XML e JSON -
JSON
{
"company": Volkswagen,
"name": "Vento",
"price": 800000
}
XML
<car>
<company>Volkswagen</company>
<name>Vento</name>
<price>800000</price>
</car>
Este capítulo aborda como codificar e decodificar objetos JSON usando a linguagem de programação PHP. Vamos começar preparando o ambiente para iniciar nossa programação com PHP para JSON.
Meio Ambiente
A partir do PHP 5.2.0, a extensão JSON é agrupada e compilada no PHP por padrão.
Funções JSON
Função | Bibliotecas |
---|---|
json_encode | Retorna a representação JSON de um valor. |
json_decode | Decodifica uma string JSON. |
json_last_error | Retorna o último erro ocorrido. |
Codificando JSON em PHP (json_encode)
A função PHP json_encode () é usada para codificar JSON em PHP. Esta função retorna a representação JSON de um valor em caso de sucesso ou FALSE em caso de falha.
Sintaxe
string json_encode ( $value [, $options = 0 ] )
Parâmetros
value- O valor sendo codificado. Esta função só funciona com dados codificados em UTF-8.
options - Este valor opcional é um bitmask que consiste em JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT.
Exemplo
O exemplo a seguir mostra como converter uma matriz em JSON com PHP -
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Durante a execução, isso produzirá o seguinte resultado -
{"a":1,"b":2,"c":3,"d":4,"e":5}
O exemplo a seguir mostra como os objetos PHP podem ser convertidos em JSON -
<?php
class Emp {
public $name = "";
public $hobbies = ""; public $birthdate = "";
}
$e = new Emp(); $e->name = "sachin";
$e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
$e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e);
?>
Durante a execução, isso produzirá o seguinte resultado -
{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
Decodificando JSON em PHP (json_decode)
A função PHP json_decode () é usada para decodificar JSON em PHP. Esta função retorna o valor decodificado de json para o tipo de PHP apropriado.
Sintaxe
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
Paramaters
json_string - É uma string codificada que deve conter dados codificados em UTF-8.
assoc - É um parâmetro do tipo booleano, quando definido como TRUE, os objetos retornados serão convertidos em arrays associativos.
depth - É um parâmetro de tipo inteiro que especifica a profundidade da recursão
options - É uma máscara de bits do tipo inteiro de decodificação JSON, JSON_BIGINT_AS_STRING é compatível.
Exemplo
O exemplo a seguir mostra como o PHP pode ser usado para decodificar objetos JSON -
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
Durante a execução, ele produzirá o seguinte resultado -
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
Este capítulo aborda como codificar e decodificar objetos JSON usando a linguagem de programação Perl. Vamos começar preparando o ambiente para iniciar nossa programação com Perl para JSON.
Meio Ambiente
Antes de começar a codificar e decodificar JSON usando Perl, você precisa instalar o módulo JSON, que pode ser obtido no CPAN. Depois de baixar JSON-2.53.tar.gz ou qualquer outra versão mais recente, siga as etapas mencionadas abaixo -
$tar xvfz JSON-2.53.tar.gz
$cd JSON-2.53 $perl Makefile.PL
$make $make install
Funções JSON
Função | Bibliotecas |
---|---|
encode_json | Converte a estrutura de dados Perl fornecida em uma string binária codificada em UTF-8. |
decode_json | Decodifica uma string JSON. |
to_json | Converte a estrutura de dados Perl fornecida em uma string json. |
from_json | Espera uma string json e tenta analisá-la, retornando a referência resultante. |
convert_blessed | Use esta função com valor verdadeiro para que Perl possa usar o método TO_JSON na classe do objeto para converter um objeto em JSON. |
Codificando JSON em Perl (encode_json)
A função Perl encode_json () converte a estrutura de dados Perl fornecida em uma string binária codificada em UTF-8.
Sintaxe
$json_text = encode_json ($perl_scalar );
or
$json_text = JSON->new->utf8->encode($perl_scalar);
Exemplo
O exemplo a seguir mostra matrizes em JSON com Perl -
#!/usr/bin/perl
use JSON;
my %rec_hash = ('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
my $json = encode_json \%rec_hash; print "$json\n";
Durante a execução, isso produzirá o seguinte resultado -
{"e":5,"c":3,"a":1,"b":2,"d":4}
O exemplo a seguir mostra como objetos Perl podem ser convertidos em JSON -
#!/usr/bin/perl
package Emp;
sub new {
my $class = shift; my $self = {
name => shift,
hobbies => shift,
birthdate => shift,
};
bless $self, $class;
return $self; } sub TO_JSON { return { %{ shift() } }; } package main; use JSON; my $JSON = JSON->new->utf8;
$JSON->convert_blessed(1); $e = new Emp( "sachin", "sports", "8/5/1974 12:20:03 pm");
$json = $JSON->encode($e); print "$json\n";
Ao executar, ele produzirá o seguinte resultado -
{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}
Decodificando JSON em Perl (decode_json)
A função Perl decode_json () é usada para decodificar JSON em Perl. Esta função retorna o valor decodificado de json para um tipo Perl apropriado.
Sintaxe
$perl_scalar = decode_json $json_text
or
$perl_scalar = JSON->new->utf8->decode($json_text)
Exemplo
O exemplo a seguir mostra como Perl pode ser usado para decodificar objetos JSON. Aqui, você precisará instalar o módulo Data :: Dumper se ainda não o tiver em sua máquina.
#!/usr/bin/perl
use JSON;
use Data::Dumper;
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; $text = decode_json($json); print Dumper($text);
Ao executar, ele produzirá o seguinte resultado -
$VAR1 = {
'e' => 5,
'c' => 3,
'a' => 1,
'b' => 2,
'd' => 4
};
Este capítulo aborda como codificar e decodificar objetos JSON usando a linguagem de programação Python. Vamos começar preparando o ambiente para iniciar nossa programação com Python para JSON.
Meio Ambiente
Antes de começar a codificar e decodificar JSON usando Python, você precisa instalar qualquer um dos módulos JSON disponíveis. Para este tutorial, baixamos e instalamos o Demjson da seguinte forma -
$tar xvfz demjson-1.6.tar.gz
$cd demjson-1.6 $python setup.py install
Funções JSON
Função | Bibliotecas |
---|---|
codificar | Codifica o objeto Python em uma representação de string JSON. |
decodificar | Decodifica uma string codificada em JSON em um objeto Python. |
Codificação de JSON em Python (codificação)
A função Python encode () codifica o objeto Python em uma representação de string JSON.
Sintaxe
demjson.encode(self, obj, nest_level=0)
Exemplo
O exemplo a seguir mostra matrizes em JSON com Python.
#!/usr/bin/python
import demjson
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = demjson.encode(data)
print json
Durante a execução, isso produzirá o seguinte resultado -
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
Decodificando JSON em Python (decodificação)
Python pode usar a função demjson.decode () para decodificar JSON. Esta função retorna o valor decodificado de json para um tipo Python apropriado.
Sintaxe
demjson.decode(self, txt)
Exemplo
O exemplo a seguir mostra como Python pode ser usado para decodificar objetos JSON.
#!/usr/bin/python
import demjson
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print text
Ao executar, ele produzirá o seguinte resultado -
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
Este capítulo aborda como codificar e decodificar objetos JSON usando a linguagem de programação Ruby. Vamos começar preparando o ambiente para iniciar nossa programação com Ruby para JSON.
Meio Ambiente
Antes de começar a codificar e decodificar JSON usando Ruby, você precisa instalar qualquer um dos módulos JSON disponíveis para Ruby. Você pode precisar instalar o Ruby gem, mas se você estiver executando a versão mais recente do Ruby, então você deve ter o gem já instalado em sua máquina, caso contrário, vamos seguir o seguinte único passo assumindo que você já tem o gem instalado -
$gem install json
Analisando JSON usando Ruby
O exemplo a seguir mostra que as 2 primeiras chaves contêm valores de string e as 3 últimas chaves contêm matrizes de strings. Vamos manter o seguinte conteúdo em um arquivo chamadoinput.json.
{
"President": "Alan Isaac",
"CEO": "David Richardson",
"India": [
"Sachin Tendulkar",
"Virender Sehwag",
"Gautam Gambhir"
],
"Srilanka": [
"Lasith Malinga",
"Angelo Mathews",
"Kumar Sangakkara"
],
"England": [
"Alastair Cook",
"Jonathan Trott",
"Kevin Pietersen"
]
}
A seguir está um programa Ruby que será usado para analisar o documento JSON mencionado acima -
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'pp'
json = File.read('input.json')
obj = JSON.parse(json)
pp obj
Ao executar, ele produzirá o seguinte resultado -
{
"President"=>"Alan Isaac",
"CEO"=>"David Richardson",
"India"=>
["Sachin Tendulkar", "Virender Sehwag", "Gautam Gambhir"],
"Srilanka"=>
["Lasith Malinga ", "Angelo Mathews", "Kumar Sangakkara"],
"England"=>
["Alastair Cook", "Jonathan Trott", "Kevin Pietersen"]
}
Este capítulo aborda como codificar e decodificar objetos JSON usando a linguagem de programação Java. Vamos começar preparando o ambiente para iniciar nossa programação com Java para JSON.
Meio Ambiente
Antes de começar a codificar e decodificar JSON usando Java, você precisa instalar qualquer um dos módulos JSON disponíveis. Para este tutorial, baixamos e instalamos JSON.simple e adicionamos a localização dejson-simple-1.1.1.jar arquivo para a variável de ambiente CLASSPATH.
Mapeamento entre JSON e entidades Java
JSON.simple mapeia entidades do lado esquerdo para o lado direito durante a decodificação ou análise, e mapeia entidades da direita para a esquerda durante a codificação.
JSON | Java |
---|---|
corda | java.lang.String |
número | java.lang.Number |
verdadeiro | falso | java.lang.Boolean |
nulo | nulo |
matriz | java.util.List |
objeto | java.util.Map |
Na decodificação, a classe concreta padrão de java.util.List é org.json.simple.JSONArray e a classe concreta padrão de java.util.Map é org.json.simple.JSONObject .
Codificando JSON em Java
A seguir está um exemplo simples para codificar um objeto JSON usando Java JSONObject, que é uma subclasse de java.util.HashMap. Nenhum pedido é fornecido. Se você precisar da ordem estrita dos elementos, use o método JSONValue.toJSONString (map) com a implementação do mapa ordenado, como java.util.LinkedHashMap.
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
System.out.print(obj);
}
}
Ao compilar e executar o programa acima, o seguinte resultado será gerado -
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
A seguir está outro exemplo que mostra um fluxo de objeto JSON usando Java JSONObject -
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();
System.out.print(jsonText);
}
}
Ao compilar e executar o programa acima, o seguinte resultado é gerado -
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
Decodificando JSON em Java
O exemplo a seguir usa JSONObject e JSONArray onde JSONObject é um java.util.Map e JSONArray é um java.util.List, para que você possa acessá-los com operações padrão de Mapa ou Lista.
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array = (JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2 = (JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1"));
s = "{}";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,]";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe) {
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
}
}
Ao compilar e executar o programa acima, o seguinte resultado será gerado -
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]
AJAX é Asynchronous JavaScript and XML, que é usado no lado do cliente como um grupo de técnicas de desenvolvimento web inter-relacionadas, a fim de criar aplicações web assíncronas. De acordo com o modelo AJAX, os aplicativos da web podem enviar e recuperar dados de um servidor de forma assíncrona, sem interferir na exibição e no comportamento da página existente.
Muitos desenvolvedores usam JSON para passar atualizações AJAX entre o cliente e o servidor. Os sites que atualizam placares esportivos ao vivo podem ser considerados um exemplo de AJAX. Se essas pontuações precisarem ser atualizadas no site, elas deverão ser armazenadas no servidor para que a página da web possa recuperar a pontuação quando for necessário. É aqui que podemos usar os dados formatados em JSON.
Quaisquer dados atualizados usando AJAX podem ser armazenados usando o formato JSON no servidor da web. AJAX é usado para que o javascript possa recuperar esses arquivos JSON quando necessário, analisá-los e realizar uma das seguintes operações -
Armazene os valores analisados nas variáveis para processamento posterior antes de exibi-los na página da web.
Ele atribui os dados diretamente aos elementos DOM na página da web, para que sejam exibidos no site.
Exemplo
O código a seguir mostra JSON com AJAX. Salvar comoajax.htmArquivo. Aqui, a função de carregamento loadJSON () é usada de forma assíncrona para fazer upload de dados JSON.
<html>
<head>
<meta content = "text/html; charset = ISO-8859-1" http-equiv = "content-type">
<script type = "application/javascript">
function loadJSON() {
var data_file = "http://www.tutorialspoint.com/json/data.json";
var http_request = new XMLHttpRequest();
try{
// Opera 8.0+, Firefox, Chrome, Safari
http_request = new XMLHttpRequest();
}catch (e) {
// Internet Explorer Browsers
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
http_request.onreadystatechange = function() {
if (http_request.readyState == 4 ) {
// Javascript function JSON.parse to parse JSON data
var jsonObj = JSON.parse(http_request.responseText);
// jsonObj variable now contains the data structure and can
// be accessed as jsonObj.name and jsonObj.country.
document.getElementById("Name").innerHTML = jsonObj.name;
document.getElementById("Country").innerHTML = jsonObj.country;
}
}
http_request.open("GET", data_file, true);
http_request.send();
}
</script>
<title>tutorialspoint.com JSON</title>
</head>
<body>
<h1>Cricketer Details</h1>
<table class = "src">
<tr><th>Name</th><th>Country</th></tr>
<tr><td><div id = "Name">Sachin</div></td>
<td><div id = "Country">India</div></td></tr>
</table>
<div class = "central">
<button type = "button" onclick = "loadJSON()">Update Details </button>
</div>
</body>
</html>
Abaixo está o arquivo de entrada data.json, tendo dados no formato JSON que serão carregados de forma assíncrona quando clicarmos no Update Detailbotão. Este arquivo está sendo mantido emhttp://www.tutorialspoint.com/json/
{"name": "Brett", "country": "Australia"}
O código HTML acima irá gerar a seguinte tela, onde você pode verificar o AJAX em ação -
Detalhes do jogador de críquete
Nome | País |
---|---|
Sachin
|
Índia
|
Quando você clica no Update Detailbotão, você deve obter um resultado como a seguir. Você mesmo pode experimentar JSON com AJAX , desde que seu navegador suporte Javascript.
Detalhes do jogador de críquete
Nome | País |
---|---|
Brett
|
Austrália
|