Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leandro Barral

[Resolvido] Zend_Json

Recommended Posts

Galera estou tentando colocar no formato Json os valores retornados de uma consulta em uma tabela.

no controlador está assim:

$tblfuncao = new Funcao();
		$this->view->resultado = $tblfuncao->fetchAll();

no view assim:

foreach($this->resultado as $result)
{
		$json = array("funcao"=>$result->Funcao,"salario"=>$result->Salario);
	$zJson = new Zend_Json();
	$print = $zJson->encode($result);
	print_r($print);
}

estou dando o print q é para ver como está sendo a saída..

porém eu qero um resultado válido, no estilo:

 

{"funcao":"Analista Jr","salario":"1350,00"},{"funcao":"Programador Jr","salario":"2350,00"},{"funcao":"Designer","salario":"1935,00"}

 

com as virgulas separando, qu é o correto..

porém como código que estou usando apenas consigo sem as virgulas, um colado com o outro:

 

{"funcao":"Analista Jr","salario":"1350,00"}{"funcao":"Programador Jr","salario":"2350,00"}{"funcao":"Designer","salario":"1935,00"}

 

Estou batendo cabeça com coisa muito boba aqui.. oque está errado??

 

Abraço.

 

Att,

 

Leandro Barral []'..

Compartilhar este post


Link para o post
Compartilhar em outros sites

pegue seus dados e monte um array e depois passe o json você deve estar errando porque você ta usando foreach, se for o caso use o foreach mas pegue os dados dentro do loop e use o json fora do loop

 

você pode usar assim que é mais simples:

 

$json = Zend_Json::encode($return);

 

veja um exemplo que eu fiz uma vez

 

$row		= $categorias->fetchAll($categorias->select()->order($sort));
$rowArray   = $row->toArray();

$return = array();
foreach ($rowArray as $dados) {
$return[]['id_categoria'] = $dados['id_categoria'];
$return[]['categoria']	= $dados['categoria'];
$return[]['descricao']	= utf8_encode($dados['descricao']);
}
$db->closeConnection();

$json = Zend_Json::encode($return);
$this->getResponse()->clearBody();
$this->getResponse()->setHeader('Content-Type', 'text/x-json');
$this->getResponse()->setBody($json);

 

OBS: nesse exemplo usei utf8_encode para nao ter problemas com acentuaçao

e no extjs ele converte sozinho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a diferença de Zend_Json->encode();

para Zend_Json::encode();

 

resultados diferentes??

 

e sobre seu exemplo vou testar aqui e volto a retornar o post com o resultado.

 

Obrigado por enquanto!

 

Att,

 

Leandro Barral []'..

Compartilhar este post


Link para o post
Compartilhar em outros sites

sua duvida ja é sobre OOP e pattern

 

:: (Paamayim Nekudotayim) para acessar metodos estaticos

 

http://br2.php.net/manual/pt_BR/language.o...nekudotayim.php

 

estou usando singleton para saber a diferença leia

 

http://br2.php.net/manual/pt_BR/language.oop5.patterns.php

 

usando singleton eu tenho so 1 referencia da classe na memoria.

 

teste esse exemplo so pra você ter uma noçao melhor do uso de singleton

 

<?php
class Normal
{
function Teste()
{
	echo "Digamos que estou conectando no banco de dados<br />";
}
}

class Singleton {
private static $instance;

private function __construct() {}

public function __clone() {
	trigger_error('Clone is not allowed.', E_USER_ERROR);
}

public function __wakeup() {
	trigger_error('Deserializing is not allowed.', E_USER_ERROR);
}

public static function getInstance() {
	if (!self::$instance instanceof self) { 
		self::$instance = new self;
		echo "Digamos que estou conectando no banco de dados singleton<br />";
	}
	return self::$instance;
}
}

$class = new Normal();
$class->Teste();
$class->Teste();
$class->Teste();
$class->Teste();
$class->Teste();
$class->Teste();
$class->Teste();
$class->Teste();
$class->Teste();
$class->Teste();


Singleton::getInstance();
Singleton::getInstance();
Singleton::getInstance();
Singleton::getInstance();
Singleton::getInstance();
Singleton::getInstance();
Singleton::getInstance();
Singleton::getInstance();
Singleton::getInstance();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi agora o lance do singleton e dos métodos estáticos...

 

bem, a saída está "melhorando" ehauehaue.. estou fazendo assim:

$return = array();

foreach($this->asdasd as $dados)
{
	$return[]['funcao'] = utf8_decode($dados->Funcao);
	$return[]['salario']= $dados->Salario;
}

$json = Zend_Json::encode($return);
$view = new Zend_View();
$view->headMeta()->appendHttpEquiv('Content-Type', 'text/x-json');
print_r($json);

e o resultado está sendo assim:

 

[{"funcao":"Analista Jr"},{"salario":"1350,00"},{"funcao":"Programador Jr"},{"salario":"2350,00"}]

 

está separando tudo, está correto?

não teria que ter um resultado assim:

 

[{"funcao":"Analista Jr","salario":"1350,00"},{"funcao":"Programador Jr","salario":"2350,00"}]

 

Obrigado pela atenção!

Att,

 

Leandro Barral []'..

Compartilhar este post


Link para o post
Compartilhar em outros sites

no seu caso você pode fazer isso:

 

$return = array();
$i = 0;
foreach ($rowArray as $dados) {
$return[$i]['id_categoria'] = $dados['id_categoria'];
$return[$i]['categoria']	= $dados['categoria'];
$return[$i]['descricao']	= utf8_encode($dados['descricao']);
$i++;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito Fabyo, antes de ver o post fiz isso!

 

agora está saindo como eu esperava:

[{"funcao":"Analista Jr","salario":"1350,00"},{"funcao":"Programador Jr","salario":"2350,00"}]

 

Vou ver como vou usar esses dados no grid do ext.

 

Por enquanto muito obrigado!

 

Volto a postar surgindo algum problema ou dúvida!

 

Att,

 

Leandro Barral []'..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.