Você está na página 1de 21

Postgresql 9.

Novas Funcionalidades JSON

array_to_json(anyarray [, pretty_bool])

row_to_json(record [, pretty_bool])

JSON

uma estrutura de dados em JavaScript;

Faz parte do JavaScript puro;

Recurso

de

JavaScript

presente

nos

navegadores web atuais;

JSON

XML vs JSON

Linguagens que suportam JSON

Velocidade

Dados Abertos

Dados Abertos

http://alagamentos.topical.com.br
http://cmsp.topical.com.br

10

Exemplo em JavaScript
var dados = {
"aluno" :
[
{"nome":"Joo", "provas": [ { "nota":8 }, {"nota":6}, {"nota":10 }, {"nota":2 } ] },
{"nome":"Maria", "provas": [ { "nota":3}, {"nota":5}, {"nota":8 }, {"nota":1 } ] },
{"nome":"Pedro", "provas": [ { "nota":7}, {"nota":6}, {"nota":6 }, {"nota":8 } ] },
]
};
var jsonData = eval(dados);

11

Exemplo em JavaScript
for(i=0;i<jsonData.aluno.length;i++){
document.write(jsonData.aluno[i].nome);
for(j=0;j<jsonData.aluno[i].provas.length;j++){
document.write(jsonData.aluno[i].provas[j].nota);
}
}

12

Preparando Exemplo
CREATE DATABASE nova_versao;
CREATE TABLE alunos(
id serial PRIMARY KEY,
aluno VARCHAR(255)
);
CREATE TABLE provas(
id serial PRIMARY KEY,
id_aluno int,
nota int
);
13

Preparando Exemplo
ALTER TABLE provas ADD CONSTRAINT fk_aluno_nota
FOREIGN KEY(id_aluno) REFERENCES alunos(id);
INSERT INTO alunos(aluno) VALUES ('Aluno1');
INSERT INTO alunos(aluno) VALUES ('Aluno2');

14

Preparando Exemplo
INSERT INTO provas(id_aluno, nota) VALUES (1,10);
INSERT INTO provas(id_aluno, nota) VALUES (1,8);
INSERT INTO provas(id_aluno, nota) VALUES (1,6);
INSERT INTO provas(id_aluno, nota) VALUES (1,5);
INSERT INTO provas(id_aluno, nota) VALUES (2,7);
INSERT INTO provas(id_aluno, nota) VALUES (2,5);
INSERT INTO provas(id_aluno, nota) VALUES (2,8);
INSERT INTO provas(id_aluno, nota) VALUES (2,10);

15

array_to_json
Consulta:
select array_to_json(array(select aluno from
alunos));

Resultado: ["Aluno1","Aluno2"]

16

array_to_json
Consulta:
select array(select z from (select aluno, id
from alunos) as z);

Resultado: {"(Aluno1,1)","(Aluno2,2)"}

18

array_to_json
Consulta:
select

array_to_json(array(select

from

(select

aluno, id from alunos) as z));

Resultado:
[{"aluno":"Aluno1","id":1},{"aluno":"Aluno2","id":2}]

19

array_to_json
Consulta:
select array_to_json(array(select z from (select
a.aluno, array_to_json(array(select p.nota from provas
p where a.id = p.id_aluno)) as provas from alunos a)
as z));

Resultado:
[{"aluno":"Aluno1","provas":[10,8,6,5]},
{"aluno":"Aluno2","provas":[7,5,8,10]}]

20

row_to_json
Consulta:
select row_to_json(a) from alunos a
select

row_to_json(alunos)

from

alunos

(sem

alias)

Resultado:
{"id":1,"aluno":"Aluno1"}
{"id":2,"aluno":"Aluno2"}

21

Validador Json

http://jsonlint.com/

22