tópicos avançados em internet b

Post on 09-Jan-2016

29 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Tópicos avançados em internet B. Carlos Oberdan Rolim Ciência da Computação. JSON (JavaScript Object Notation). O que é JSON. JSON é um formato para troca de informações Usado por aplicações que fazem uso de Ajax Aspectos mais importantes na troca de dados: Simplicidade Extensabilidade - PowerPoint PPT Presentation

TRANSCRIPT

Tópicos avançados em internet B

Carlos Oberdan Rolim

Ciência da Computação

JSON

(JavaScript Object Notation)

O que é JSON

JSON é um formato para troca de informações

Usado por aplicações que fazem uso de Ajax

Aspectos mais importantes na troca de dados:

Simplicidade

Extensabilidade

Interoperabilidade

Leitura humana

O que é JSON

Subconjunto da ECMA-262 Third Edition.

Independente de linguagem

Baseado em texto

Formato leve

Simples de parsear

O que é JSON

É uma notação aplicada em JavaScript para que seja possível a definição de objetos (estruturas) complexas

Sua forma de aplicação assemelha-se a um objeto abstraído do mundo real o qual trabalhamos em POO

Fornece a capacidade de atribuir métodos de execução (funções) que estarão diretamente ligadas ao objeto criado

prototype

O que é JSON

Bastante utilizado para auxiliar a execução de chamadas AJAX onde o retorno obtido da execução no servidor obedece aos padrões de criação de objetos JSON para que os dados retornados possam ser lidos em JavaScript.

Desta forma, a programação no servidor gera Strings que serão interpretadas no código JavaScript através da função eval() ao qual dará a origem a um objeto em JavaScript

O que NÃO é

Não é um formato de documento

Não é uma linguagem de marcação

Não é um formato de serialização:

Não possui estruturas ciclicas ou recorrentes

Não possui estruturas invisíveis

Não possui funções

Histórico

1999 ECMAScript Third Edition (European Computer Manufacturers Association)

Linguagem de programação baseada em scripts

Base de criação do JavaScript e ActionScript

2001 State Software, Inc.

2002 JSON.org

2005 Ajax

2006 RFC 4627

Linguagens

Chinese

English

French

German

Italian

Japanese

Korean

Linguagens

ActionScript

C / C++

C#

Cold Fusion

Delphi

E

Erlang

Java

Lisp

Perl

Objective-C

Objective CAML

PHP

Python

Rebol

Ruby

Scheme

Squeak

Como funciona

JSON é um subset de JavaScript.

Pode ser parseado através de um parser JavaScript

Pode representar desde objetos simples até objetos complexos

Valores suportados

String

Number

Boolean

Objetos

Arrays

Null

Valores

Strings

Numbers

Booleans

Objects

Arrays

null

Valores

number

string

value

object

false

null

array

true

Strings

Sequencia de 0 ou mais caracteres Unicode

No

Um caracter é representado como uma string de tamanho 1

Envolvido por aspas duplas “

Barra de escape

String

string

"Any UNICODE character except" or \ or control character

\ "

\

quotation mark

reverse solidus

/solidus

bbackspace

formfeed

newline

carriage return

horizontal tab

4 hexadecimal digits

f

n

r

t

u

"

Numbers

Integer

Real

Scientific

No octal or hex

No NaN or Infinity

Use null instead

Number

number

digit 1 - 9

.0

digit

e

E

digit

-

digit

+

-

Booleans

true

false

null

Um valor que não é nada

Object

São conjuntos não ordenados de pares formados por chave/valor (key/value)

Objetos são envolvidos por { }

, separa pares key/value

: separa keys e values

Keys são strings

Values são valores JSON

struct, record, hashtable, object

Object

{ : }valuestring

object

,

Object

{"name":"Jack B. Nimble","at large": true,"grade":"A","level":3, "format":{"type":"rect","width":1920, "height":1080,"interlace":false, "framerate":24}}

Object

{ "name": "Jack B. Nimble", "at large": true, "grade": "A", "format": { "type": "rect", "width": 1920, "height": 1080, "interlace": false, "framerate": 24 }}

Array

São sequencias ordenadas de valores

São envolvidas por []

, separa valores

JSON não fala nada sobre indices.

Uma implementação pode iniciar em 0 ou 1.

Array

[ ]value

array

,

Array

["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

[

[0, -1, 0],

[1, 0, 0],

[0, 0, 1]

]

Arrays vs Objects

Use objetos quando as chaves são strings arbitrarias

Use arrays quando as chaves são inteiros sequenciais

Não confundir com o termo Array Associativo

JSON x XML

JSON é muito usado em AJAX. O The X do AJAX vêm de XML

{

"fullname": "Swati Kumar",

"org": "Columbia",

}

Em XML

<?xml version='1.0‘ encoding='UTF-8'?>

<element>

<fullname>Swati Kumar</fullname>

<org>Columbia</org>

</element>

JSON x XML

JSON no lado cliente

var name = eval('(' + req.responseText + ')').fullname.value;

Para acessar um elemento composto

eval('(' + req.responseText + ')').xyz.abc.value;

Pode-se perceber que qualquer nível de profundidade é acessado facilmente

JSON x XML

XML no lado cliente

var root = req.responseXML;

var name = root.getElementsByTagName(‘fullname’);

Para acessar um elemento composto

root.getElementsByTagName(‘xyz’)[0].firstChild

Para acessar níveis mais profundos existe mais overhead

Reduzida extensabilidade em XML

Aspectos de segurança

Same Origin Policy - JavaScript pode acessar o conteúdo de uma página web somente se a página e o JavaScript originam do mesmo domínio

JavaScripts maléficos podem ler informações sensíveis de outros sites usando as credenciais do cliente e enviar esses dados de volta ao atacante

Embora o JavaScript maléfico não possa manipular diretamente o conteúdo, ele pode visualizar a execução e armazenar os valores retornados

Esse problema foi agravado com JSON já que arrays JSON são por si próprias objetos JavaScript e qualquer script maléfico pode ver esses objetos diretamente

Onde JSON pode ser usado

Devido ao seu formato leve pode ser usado para transferir quantidade média de dados

Pode ser renderizado em HTML

Aplicações AJAX

Usar em aplicações baseadas em browser

Forma de uso

Devido ao conceito de Orientação a Objetos aplicado ao JavaScript não é incomum que ao JSON sejam atribuídos atributos privados e públicos.

Estes atributos terão comportamentos diferenciados dentro do objeto obedecendo às regras de modificadores utilizadas em Orientação a Objetos

Atributos privados

acessados apenas por códigos executados dentro dos métodos pertencentes ao objeto

Atributos públicos

estarão disponíveis para acesso externo a quem instancia este objeto

Forma de uso

Existem duas formas de gerar objetos JSON.

1ª - Trabalhando com construção do objeto a partir de funções as quais acabam por fazer papel de construtor do objeto JavaScript.

2ª - Trabalhando com interpretação de Strings contendo os padrões de notação JSON.

Forma de uso

Primeira forma

Criação de JSON a partir de funções

function DefinicaoObjeto()  {

    this.Atributo1 = "Primeiro Atributo"; //atributo público

     var Atributo2 = "Segundo Atributo"; //atributo privado

     this.ValorConcatenado = this.Atributo1 + " - " + Atributo2; //atributo publico;

   }

 

var meuObj = new DefinicaoObjeto(); // momento de criação do JSON

Forma de uso

Atributo1

“this” indica que pertencerá ao objeto e não ao contexto local

Atributo2

Contexto local não estando acessível a quem instanciar o objeto

Criação do objeto JSON

Para acessar seus atributos públicos

alert(meuObj.Atributo1);

alert(meuObj.ValorConcatenado);

Forma de uso

Segunda forma

Criação de JSON a partir de strings

Devem seguir alguns padrões de notação para que o Compilador JavaScript consiga interpretá-las e criar uma estrutura complexa, ou seja, criar o objeto

A diferença entre criação do JSON a partir de métodos e a criação do JSON a partir de Strings está pura e claramente em sua origem de existência, pois a partir do momento que o objeto foi criado, não existem mais diferenças e sua utilização é igual para ambos os casos

Forma de usovar meuObj = eval('({' + "Retorno:{'Atributo1':'Valor1','Atributo2':'Valor2'}" + '})');

alert(meuObj.Retorno.Atributo1);

alert(meuObj.Retorno.Atributo2);

O método javaScript chamado “eval()” serve para que o Compliador JavaScript resolva a instrução da String JSON e crie o objeto.

A Composição da String é fragmentada em 3 partes.

1ª - Definir o objeto.

2ª - Definir o atributo.

3ª - Definir o valor.

Azul = definição do objeto. Indica que Retorno é um objeto complexo

Preto = Atributo

Laranja = Valor

Forma de uso

Criação de estrutura complexa através de strings

var meuObj = eval('({' + "Retorno:[{'Atributo1':'Valor1','Atributo2':'Valor2'},{'Atributo1':'Valor3', 'Atributo2':'Valor4'}]" + '})');

alert(meuObj.Retorno[0].Atributo1);

alert(meuObj.Retorno[1].Atributo2);

Para definição de um array usar [ ]

Separação de grupos de atributos que se encontram dentro de “{ }” por vírgulas “,“ ficando desta forma: “{},{}”

Acesso através de

meuObj.Retorno[0].Atributo1

top related