JSON é um dos formatos mais populares para representar dados como texto. Por exemplo, o JSON é usado para transferir dados entre front-end e back-end, em arquivos de configuração, em jogos, em editores de texto e em muitas outras áreas. Como programador, você definitivamente encontrará JSON.

Apresentando a sintaxe

Vamos listar os tipos de dados disponíveis em JSON:

  1. Strings são quaisquer caracteres entre aspas duplas:

    "kwerty"
    "125 + 42"
    "G"

    Caracteres especiais são escapados com uma barra:

    "primeira linha\nsegunda linha"
    "Ele disse: \"Olá!\""
  2. Números, incluindo números negativos e reais. Sem citações:

    18 -333 17,88 1,2e6
  3. Os valores booleanos são true / false (sem aspas).

  4. null é o valor padrão para representar "nada". Nenhuma aspa é usada aqui.

  5. Array - Este tipo pode conter valores de quaisquer outros tipos. Está entre colchetes. Seus elementos são separados por vírgulas:

    ["Código", "Gym", "CodeGym", "¯\_(ツ)_/¯"]
    [verdadeiro, verdadeiro, falso, verdadeiro, falso, falso, falso, falso, falso]
    [[1, 2], [3, 999, 4, -5], [77]]

    O último exemplo é um array de arrays

  6. Object — Este tipo complexo é o mais comumente usado. Ele contém pares chave-valor, onde o valor pode ser qualquer um dos tipos listados acima, bem como outros objetos. É envolto em chaves e os pares são separados por vírgulas:

    
    {
     "name": "Dale",
     "age": 7
    }
    

Representando um objeto Java como JSON

Agora vamos pegar algum objeto Java e ver como ele se parece como JSON.

Primeiro, vamos definir uma classe:


public class Human {
	String name;
	boolean male;
	int age;
	Set<Human> parents;

	public Human(String name, boolean male, int age) {
    	    this.name = name;
    	    this.male = male;
    	    this.age = age;
	}
}

Agora vamos criar nosso objeto:


	Human father = new Human("Peter", true, 31);
	Human mother = new Human("Mary", false, 28);
	mother.parents = new HashSet<>();
	Human son = new Human("Paul", true, 7);
	son.parents = Set.of(father, mother);

E agora vamos tentar representar ofilhoobjeto com a maior precisão possível no formato JSON:

{
 "nome" : "Paul",
 "masculino": verdadeiro,
 "idade": 7,
 "pais": [
 {
   "nome": "Peter",
   "masculino": verdadeiro,
   "idade": 31,
   "pais" : null
 },
 {
   "name" : "Maria",
   "male" : false,
   "age" : 28,
   "parents" : null
 }
]
}

Comentários em JSON

Tudo aqui é exatamente o mesmo que em Java. Existem dois tipos de comentários: // e /*...*/. Espero não precisar lembrá-lo de como eles diferem.