{"id":46,"date":"2007-11-04T02:21:35","date_gmt":"2007-11-04T09:21:35","guid":{"rendered":"http:\/\/www.milfont.org\/tech\/2007\/11\/04\/o-que-e-json\/"},"modified":"2007-11-06T10:24:03","modified_gmt":"2007-11-06T17:24:03","slug":"o-que-e-json","status":"publish","type":"post","link":"https:\/\/www.milfont.org\/tech\/2007\/11\/04\/o-que-e-json\/","title":{"rendered":"O que \u00e9 JSON"},"content":{"rendered":"<p><script type=\"text\/javascript\"> function get_style46 () { return \"none\"; } function end46_ () { document.getElementById('wqd46').style.display = get_style46(); } <\/script>A especifica\u00e7\u00e3o do &#8220;ECMA  Script&#8221; (<a href=\"http:\/\/www.ecma-international.org\/publications\/files\/ECMA-ST\/Ecma-262.pdf\">ECMA262<\/a>, 3rd Edition, December 1999), que formaliza o Javascript, define na p\u00e1gina 2 (4.2) a senten\u00e7a:<\/p>\n<p><cite>&#8220;An ECMAScript object is an unordered collection of properties each with zero or more attributes&#8230;&#8221; <\/cite><\/p>\n<p>Essa defini\u00e7\u00e3o \u00e9 o que chamamos de objeto literal, uma cole\u00e7\u00e3o n\u00e3o ordenada de propriedades com um ou mais elementos, onde esses elementos podem ser valores primitivos comuns a todas as linguagens como: inteiro, string ou char; ou outros objetos.<\/p>\n<pre lang=\"javascript\">\r\nvar Produto = {\r\n\tnome:\"Microprocessador AMD Turion 64\",\r\n\tvalue:150,\r\n\tcusto:50,\r\n\tgetValue:function(){\r\n\t\treturn (value + custo)\r\n\t}\r\n}<\/pre>\n<p>Douglas <a href=\"http:\/\/www.crockford.com\/\">Crockford<\/a>, prop\u00f4s um  formato de troca de dados simples com base no objeto literal do JavaScript, que denominou de <a href=\"http:\/\/www.json.org\/\">JSON<\/a> (JavaScript Object Notation). Esse mecanismo simples \u00e9 um subconjunto do objeto literal e \u00e9 facil de qualquer linguagem processar e gerar por ser baseado no formato texto, como linguagem completamente independente que usa conceitos similares \u00e0s linguagens C-like. Esses motivos tornam o JSON o formato ideal de troca de dados.<\/p>\n<p>JSON \u00e9 constru\u00eddo com base em uma cole\u00e7\u00e3o de pares chave\/valor (que definem as propriedades e seus valores), iniciado com &#8220;{&#8221; (chave aberta) e finalizado com &#8220;}&#8221; (chave fechada) . Cada chave \u00e9 seguida de &#8220;:&#8221; (dois pontos) e os pares s\u00e3o separados por &#8220;,&#8221; (v\u00edrgula).<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/json.org\/object.gif\" alt=\"objeto json\" \/><\/p>\n<pre lang=\"javascript\">\r\nvar Contato = {\r\n\t\"nome\":\"Christiano Milfont\",\r\n\t\"email\":\"cmilfont@gmail.com\",\r\n\t\"anivers\u00e1rio\":\"28\/12\/1977\"\r\n}<\/pre>\n<p>Um array pode ser usado como valor para uma chave, iniciado por &#8220;[&#8221; (colchete aberto) e finalizado por &#8220;]&#8221; (colchete fechado). Cada valor do array \u00e9 separado por &#8220;,&#8221; (v\u00edrgula).<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/json.org\/array.gif\" alt=\"array json\" \/><\/p>\n<pre lang=\"javascript\">\r\nvar Contato = {\r\n\t\"nome\":\"Christiano Milfont\",\r\n\t\"telefones\":[\r\n\t\t'91942365',\r\n\t\t'88293759'\r\n\t]\r\n}<\/pre>\n<p>Um valor pode ser uma String em aspas duplas (em javascript o valor pode ser aspa simples, \u00e9 prefer\u00edvel que o parser resolva as duas formas, apesar de que em linguagens como java as aspas simples representam um char), ou um n\u00famero, ou um booleano, ou um null, ou um outro objeto ou um array.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/json.org\/value.gif\" alt=\"valores json\" \/><\/p>\n<p>No caso do objeto e do array, essas estrutura podem ser aninhadas.<\/p>\n<pre lang=\"javascript\">\r\nvar Contato = {\r\n\t\"nome\":\"Christiano Milfont\",\r\n\t\"endereco\":{\r\n\t\t\"rua\":\"Eurico Medina\",\r\n\t\t\"numero\":185,\r\n\t\t\"mapa\":{\r\n\t\t\t\"latitude\":\"\",\r\n\t\t\t\"longitude\":\"\"\r\n\t\t}\r\n\t},\r\n\t\"telefones\":[\r\n\t\t'91942365',\r\n\t\t'88293759'\r\n\t]\r\n}<\/pre>\n<p>String \u00e9 uma cole\u00e7\u00e3o de zero ou mais caracteres <a href=\"http:\/\/pt.wikipedia.org\/wiki\/Unicode\">Unicode<\/a>, onde a barra invertida pode ser usada para passar caracteres especais como quebra de linha, tab, entre outros. N\u00fameros podem ser inteiros ou reais, menos hexadecimal ou octal.<\/p>\n<p>Existem c\u00f3digos de processamento JSON prontos em dezenas de linguagens, praticamente em todas as linguagens modernas voce encontra no <a href=\"http:\/\/www.json.org\/\">site do projeto<\/a>.<\/p>\n<p>A vantagem do JSON sobre o XML como formato de troca de dados \u00e9 a diminui\u00e7\u00e3o do tamanho da resposta, facilidade de entendimento para o programador (j\u00e1 que o c\u00f3digo \u00e9 similiar a linguagem que voc\u00ea usa), e principalmente, no caso de javascript, o parser facilitado porque \u00e9 baseado em sua especifica\u00e7\u00e3o de objeto.<\/p>\n<p>C\u00f3digo de retorno do Flickr em <a href=\"http:\/\/www.flickr.com\/services\/rest\/?method=flickr.test.echo&amp;format=soap2&amp;foo=bar&amp;api_key=08d9221b2468be6ccfe5bc229db50181\">XML<\/a> e <a href=\"http:\/\/www.flickr.com\/services\/rest\/?method=flickr.test.echo&amp;format=json&amp;api_key=08d9221b2468be6ccfe5bc229db50181\">JSON<\/a> respectivamente:<\/p>\n<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243; ?&gt;<br \/>\n&lt;s:Envelope xmlns:s=&#8221;http:\/\/www.w3.org\/2003\/05\/soap-envelope&#8221;&gt;<br \/>\n&lt;s:Body&gt;<br \/>\n&lt;FlickrResponse xmlns=&#8221;http:\/\/flickr.com\/ns\/api#&#8221;&gt;<br \/>\n&lt;method&gt;flickr.test.echo&lt;\/method&gt;<br \/>\n&lt;format&gt;soap2&lt;\/format&gt;<br \/>\n&lt;foo&gt;bar&lt;\/foo&gt;<br \/>\n&lt;api_key&gt;08d9221b2468be6ccfe5bc229db50181&lt;\/api_key&gt;<br \/>\n&lt;\/FlickrResponse&gt;<br \/>\n&lt;\/s:Body&gt;<br \/>\n&lt;\/s:Envelope&gt;<\/p>\n<pre lang=\"javascript\">\r\n\r\njsonFlickrApi({\r\n\t\"method\":{\r\n\t\t\"_content\":\"flickr.test.echo\"\r\n\t},\r\n\t\"format\":{\r\n\t\t\"_content\":\"json\"\r\n\t},\r\n\t\"api_key\":{\r\n\t\t\"_content\":\"08d9221b2468be6ccfe5bc229db50181\"\r\n\t},\r\n\t\"stat\":\"ok\"\r\n})<\/pre>\n<p>Dessa forma voc\u00ea pode usar as estrat\u00e9gias de &#8220;<a href=\"http:\/\/www.milfont.org\/tech\/2007\/10\/02\/eval-is-evil\/\">Eval<\/a>&#8221;  ou &#8220;<a href=\"http:\/\/www.milfont.org\/tech\/2007\/10\/08\/script-tag\/\">Scripttag<\/a>&#8221; para processar o JSON de forma transparente em sua aplica\u00e7\u00e3o AJAX. Usado como configura\u00e7\u00e3o em aplica\u00e7\u00f5es no lado servidor, voc\u00ea pode construir uma arquitetura com base em interfaces para validar os dados, assim como validaria usando schemas no XML.<\/p>\n<p>A maioria das APIs  de web services dos principais Players no mercado WEB, passaram a oferecer o JSON como alternativa ao XML pela facilidade de interpreta\u00e7\u00e3o para a arquitetura REST. <a href=\"http:\/\/developer.yahoo.com\/common\/json.html\">Yahoo<\/a> e <a href=\"http:\/\/code.google.com\/apis\/gdata\/json.html\">Google<\/a> s\u00e3o os principais expoentes desse mecanismo.<\/p>\n<p id=\"wqd46\">Typically chemist&#8217;s shop can sale to you with discreet treatments for various soundness problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">viagra manufacturer coupon<\/a>&#8220;. Maybe &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">viagra discount coupons<\/a>&#8221; is a very complicated matter. Matters, like &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">coupons for viagra<\/a>&#8220;, are connected numerous types of soundness problems. If you need to take prescription medications, ask your pharmacist to check your testosterone levels before. Sometimes the treatment options may include erectile dysfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile malfunction drugs like Viagra without a recipe is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies. <\/p>\n<p><script type=\"text\/javascript\"> end46_(); <\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A especifica\u00e7\u00e3o do &#8220;ECMA Script&#8221; (ECMA262, 3rd Edition, December 1999), que formaliza o Javascript, define na p\u00e1gina 2 (4.2) a senten\u00e7a: &#8220;An ECMAScript object is an unordered collection of properties each with zero or more attributes&#8230;&#8221; Essa defini\u00e7\u00e3o \u00e9 o que chamamos de objeto literal, uma cole\u00e7\u00e3o n\u00e3o ordenada de propriedades com um ou mais [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23,26,8],"tags":[60,61,372,373],"_links":{"self":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/46"}],"collection":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/comments?post=46"}],"version-history":[{"count":0,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/46\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/media?parent=46"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/categories?post=46"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/tags?post=46"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}