validator - O que é o JSON e por que eu o utilizaria?



json parse (10)

Eu olhei na Wikipédia, pesquisei no Google e li a documentação oficial, mas ainda não cheguei ao ponto em que realmente entendo o que é o JSON e por que o usaria.

Eu tenho construído aplicativos usando PHP, MySQL e Javascript / HTML por um tempo, e se JSON pode fazer algo para tornar minha vida mais fácil ou meu código melhor ou minha interface de usuário melhor, então eu gostaria de saber sobre isso. Alguém pode me dar uma explicação sucinta?

https://ffff65535.com


Às vezes a tecnicidade é dada onde nenhuma é necessária, e embora muitas das respostas mais votadas sejam precisamente técnicas e específicas, eu pessoalmente não acho que elas sejam mais fáceis de entender, ou sucintas, como o que pode ser encontrado na Wikipedia ou em documentação oficial.

A maneira que eu gosto de pensar em JSON é exatamente o que é - uma linguagem dentro de um mundo de diferentes idiomas. No entanto, a diferença entre o JSON e outras linguagens é que "todos" "fala" JSON, juntamente com sua "língua nativa".

Usando um exemplo do mundo real, vamos fingir que temos três pessoas. Uma pessoa fala igbo como sua língua nativa. A segunda pessoa gostaria de interagir com a primeira pessoa, no entanto, a primeira pessoa fala iorubá como sua primeira língua.

O que podemos fazer?

Felizmente, a terceira pessoa do nosso exemplo cresceu falando inglês, mas também fala o Igbo e o Yoruba como segunda língua, e assim pode atuar como um intermediário entre os dois primeiros indivíduos.

No mundo da programação, a primeira "pessoa" é Python, a segunda "pessoa" é Ruby, e a terceira "pessoa" é JSON, que por acaso é capaz de "traduzir" Ruby para Python e vice-versa! Agora, obviamente, essa analogia não é perfeita, mas, como alguém que é bilíngue, acredito que seja uma maneira fácil de ver como o JSON interage com outras linguagens de programação.


É muito simples. JSON significa Java Script Object Notation. Pense nisso como uma alternativa ao uso de XML para transferir dados entre componentes de software.

Por exemplo, recentemente escrevi um monte de serviços web que retornaram JSON, e alguns desenvolvedores de Javascript então escreveram código que chamou os serviços e consumiu as informações retornadas naquele formato.


Em suma, é uma notação de script para passar dados. De certa forma, uma alternativa ao XML, suportando nativamente tipos básicos de dados, matrizes e matrizes associativas (pares nome-valor, chamados Objetos, porque é isso que eles representam).

A sintaxe é aquela usada em JavaScript e o próprio JSON significa "JavaScript Object Notation". No entanto, tornou-se portátil e é usado em outros idiomas também.

Um link útil para detalhes está aqui:

http://secretgeek.net/json_3mins.asp


JSON é JavaScript Object Notation. É uma maneira muito mais compacta de transmitir conjuntos de dados através de conexões de rede, em comparação com XML. Sugiro que o JSON seja usado em qualquer aplicativo semelhante ao AJAX, onde XML seria a opção "recomendada". A verbosidade do XML aumentará o tempo de download e aumentará o consumo de largura de banda ($$$). Você pode obter o mesmo efeito com o JSON e sua marcação é quase exclusivamente dedicada aos dados em si e não à estrutura subjacente.


O formato JSON é geralmente usado para serializar e transmitir dados estruturados por meio de uma conexão de rede. Ele é usado principalmente para transmitir dados entre um servidor e um aplicativo da Web, servindo como uma alternativa ao XML.


Resumindo - o JSON é uma maneira de serializar de tal maneira que se torna código JavaScript. Quando executado (com eval ou não), esse código cria e retorna um objeto JavaScript que contém os dados que você serializou. Isso está disponível porque o JavaScript permite a seguinte sintaxe:

var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
    'StringProperty' : 'Value',
    'IntProperty' : 12,
    'ArrayProperty' : [ 1, 2, 3],
    'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.

Você pode usar isso para várias finalidades. Por um lado, é uma maneira confortável de passar dados do seu servidor para o seu código JavaScript. Assim, isso é freqüentemente usado em AJAX.

Você também pode usá-lo como um mecanismo de serialização autônomo, que é mais simples e ocupa menos espaço do que XML. Existem muitas bibliotecas que permitem serializar e desserializar objetos em JSON para várias linguagens de programação.


Tente o seguinte código para analisar sua resposta do php json: read.php

<script
  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>
<script type="text/javascript">  
$.ajax({
    url:'index.php',
    data:{},
    type:"POST",
    success:function(result) {
        jsondecoded = $.parseJSON(result);
        $.each(jsondecoded, function(index, value) {
            $("#servers").text($("#servers").text() + " " + value.servername);
            console.log(value.start);
            console.log(value.end);
            console.log(value.id);
        });
    },
    statusCode: {
    404: function() {
      alert( "page not found" );
    }
  }
});
</script>

server.php

<?php 
echo '[{"start":"2017-08-29","end":"2017-09-01","id":"22"},{"start":"2017-09-03","end":"2017-09-06","id":"23"}]';
?>

Todas as respostas acima se concentram em detalhes. Então, vou tentar explicar o conceito para que você esteja em posição de entender o que foi dito acima.

O que é o JSON? - Como eu expliquei para minha esposa TM

Eu: “É basicamente uma maneira de se comunicar com alguém por escrito ... mas com regras.

Esposa: sim ....?

EU: Vamos usar o inglês como exemplo: temos regras - pontos completos, vírgulas, colchetes, hifens, apóstrofes, etc., e todos significam coisas diferentes. Basicamente, todos nós concordamos que um ponto final significa (ou seja, devemos parar quando lemos um).

Esposa: Então você está dizendo que o JSON é uma maneira de escrever inglês para alguém, mas tem regras que ambas as partes concordam?

Eu: Exatamente! Exceto que essas regras são muito específicas. No Inglês prosaico, as regras são bem frouxas: assim como no combate com gaiola: você pode fazer o que quiser, exceto algumas noções básicas (por exemplo, fazer os olhos). Por exemplo, se eu quisesse dizer ao IRS sobre a nossa família, eu poderia fazê-lo em alguns diferentes usando o Inglês prosaico. Observe as diferenças de cada maneira:

Eu:

• Exemplo 1: Nossa família tem 4 pessoas: você, eu e 2 filhos.

• Exemplo 2: Nossa família: você, eu, criança1 e criança2.

• Exemplo 3: Família: [você, eu, criança1, criança2]

• Exemplo 4: temos 4 pessoas na nossa família: mãe, pai, criança 1 e criança 2.

Esposa: Ok, eu entendi a foto. Você pode dizer a mesma coisa de muitas maneiras diferentes em inglês. Você pode adicionar algumas palavras aqui e ali, algumas vírgulas aqui e ali e todos ainda entenderão.

Eu: Exatamente. Exceto no JSON, as regras são muito restritivas. Você só pode se comunicar de uma certa maneira. E você deve seguir essas regras para outra pessoa entender: parênteses, vírgulas em certos lugares.

Esposa: Por que eles não usam apenas o inglês simples?

Eu: Eles iriam, mas lembre-se que estamos lidando com computadores. Um computador é estúpido e não será capaz de entender frases. Então temos que ser realmente específicos quando os computadores estão envolvidos, caso contrário, eles ficam confusos. Além disso, o JSON é uma maneira bastante eficiente de se comunicar, então a maioria das coisas irrelevantes é cortada, o que é uma boa mão. Se você quisesse comunicar nossa família, a um computador, uma maneira de fazer isso é assim:

{
                "Family" :  ["Me", "Wife", "Kid1", "Kid2"] 
}

…… e isso é basicamente JSON. Mas lembre-se, você DEVE obedecer às regras gramaticais do JSON. Se você quebrar essas regras, então um computador simplesmente não entenderá (ou seja, analisará) o que você está escrevendo.

Esposa: Então, como eu escrevo em Json?

Eu: Leia as respostas acima para detalhes. Em suma, você é forçado a comunicar coisas usando pares e matrizes de valor-chave.

Resumo

O JSON é basicamente uma forma de comunicar dados a alguém, com regras muito específicas.


Eu gosto do JSON principalmente porque é muito conciso . Para conteúdo da web que pode ser gzipado, isso não é necessariamente um grande problema (daí porque x html é tão popular). Mas há ocasiões em que isso pode ser benéfico.

Por exemplo, para um projeto eu estava transmitindo informações que precisavam ser serializadas e transmitidas via XMPP . Como a maioria dos servidores limitará a quantidade de dados que você pode transmitir em uma única mensagem, achei útil usar o JSON sobre a alternativa óbvia, XML.

Como um bônus adicional, se você estiver familiarizado com Python ou Javascript, você já sabe muito bem o JSON e pode interpretá-lo sem muito treinamento.


JSON (JavaScript Object Notation) é um formato leve usado para troca de dados. Ele é baseado em um subconjunto da linguagem JavaScript (a maneira como os objetos são construídos em JavaScript). Conforme indicado no MDN , alguns JavaScript não são JSON e alguns JSON não são JavaScript.

Um exemplo de onde isso é usado é respostas de serviços da web. Nos velhos tempos, os serviços da Web usavam XML como formato primário de dados para transmitir dados de volta, mas desde que o JSON apareceu ( O formato JSON é especificado no RFC 4627 por Douglas Crockford ), ele tem sido o formato preferido porque é muito mais peso leve

Você pode encontrar muito mais informações no site oficial do JSON .

O JSON é construído em duas estruturas:

  • Uma coleção de pares nome / valor. Em vários idiomas, isso é realizado como um objeto, registro, estrutura, dicionário, tabela de hash, lista com chave ou matriz associativa.
  • Uma lista ordenada de valores. Na maioria das linguagens, isso é realizado como uma matriz, vetor, lista ou sequência.

Estrutura JSON













Aqui está um exemplo de dados JSON:

{
     "firstName": "John",
     "lastName": "Smith",
     "address": {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "postalCode": 10021
     },
     "phoneNumbers": [
         "212 555-1234",
         "646 555-4567"
     ]
 }

JSON em JavaScript

JSON (em Javascript) é uma string!

As pessoas geralmente assumem que todos os objetos Javascript são JSON e que JSON é um objeto Javascript. Isso está incorreto.

Em Javascript var x = {x:y} não é JSON , este é um objeto Javascript . Os dois não são a mesma coisa. O equivalente JSON (representado na linguagem Javascript) seria var x = '{"x":"y"}' . x é um objeto do tipo string e não um objeto por si só. Para transformar isso em um objeto Javascript completo, você deve primeiro analisá-lo, var x = JSON.parse('{"x":"y"}'); , x agora é um objeto, mas isso não é mais o JSON.

Veja o objeto Javascript Vs JSON

Ao trabalhar com JSON e JavaScript, você pode ser tentado a usar a função eval para avaliar o resultado retornado no retorno de chamada, mas isso não é sugerido, pois há dois caracteres (U + 2028 e U + 2029) válidos em JSON, mas não em JavaScript (leia mais sobre isso here ).

Portanto, é preciso sempre tentar usar o script de Crockford que verifica um JSON válido antes de avaliá-lo. Link para a explicação do script é encontrado here e aqui está um link direto para o arquivo js. Cada grande navegador hoje em dia tem sua própria implementação para isso.

Exemplo sobre como usar o analisador JSON (com o json do snippet de código acima):

//The callback function that will be executed once data is received from the server
var callback = function (result) {
    var johnny = JSON.parse(result);
    //Now, the variable 'johnny' is an object that contains all of the properties 
    //from the above code snippet (the json example)
    alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};

O analisador JSON também oferece outro método muito útil, o stringify . Esse método aceita um objeto JavaScript como um parâmetro e retorna uma string com o formato JSON. Isso é útil quando você deseja enviar dados de volta ao servidor:

var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}

Os dois métodos acima ( parse e stringify ) também recebem um segundo parâmetro, que é uma função que será chamada para cada chave e valor em cada nível do resultado final, e cada valor será substituído pelo resultado de sua função inserida. (Mais sobre isso here )

Btw, para todos vocês que acham que o JSON é apenas para JavaScript, confira este post que explica e confirma o contrário.

Referências





json