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