Em que situações é melhor usar json_encode () do que usar serialize ()?

votos
27

Isso é tudo que eu preciso perguntar. Conferiu o manual de PHP e vi um post do usuário dizendo que serialize é 45-90% mais lento do que json_encode (ele correu alguns benchmarks). Mas como lento é lenta? Eu posso encontrar um monte de versus coisas alastrando ao redor, mas nenhum dos quais um novato como eu pode se relacionar.

Eu só escreveu um script que codificada uma matriz em JSON e outra para decodificá-lo. Eu fiz mesmo com serialize. Obviuously que não vai me dizer qualquer diferença significativa entre eles.

Publicado 21/09/2009 em 02:50
usuário
Em outras línguas...                            


3 respostas

votos
3

Faça isso 10.000 vezes (cada) para (espero) ter uma idéia mensurável de diferenças tanto uso de memória e tempo de CPU.

Principalmente a diferença não será significativo em termos de desempenho. Usando JSON é útil em duas circunstâncias particulares: para voltar a um navegador da Web e para interoperabilidade com outras aplicações (por meio de serviços da Web e outros meios), particularmente aqueles em plataformas não-PHP.

Respondeu 21/09/2009 em 02:55
fonte usuário

votos
1

Se você está transferindo dados entre uma aplicação e outra, geralmente é quase sempre melhor usar JSON codificados de dados em vez de serializados PHP dados como o mais tarde é um formato específico para PHP e não tão portátil como JSON.

Mesmo em uma situação onde o servidor e cliente são ambos baseados em PHP, cabe a você usar um formato portátil como JSON para permitir a criação de novos clientes no futuro sem ter que alterar o formato resposta do servidor.

Eu não fiz qualquer avaliação comparativa destes dois mim mesmo, mas se você está achando que a codificação JSON é mais rápido do que a serialização, que mais uma razão para usá-lo.

Além disso, eu prefiro JSON dados codificados como é mais fácil de ler do que dados serializados e pode rapidamente ser jogado no Firebug para ser visualizado.

Respondeu 21/09/2009 em 03:05
fonte usuário

votos
2

Quando você só codificar / serializar um par de objetos / array, eu diria que a diferença de velocidade não será tão importante: você genherally não vai percebê-lo.

A diferença é que serialize é feito especialmente para PHP; por exemplo, sur informações como classes não são perdidos com serialize, e pode ser recuperado quando unserializing.

Por outro lado, JSON não é específico para PHP, o que significa que é um formato de intercâmbio bom - seu uso principal é a troca de dados entre JavaScript e PHP.


Por exemplo, considere este pedaço de código:

class A {
    public $a;
    public function __construct($a) {
        $this->a = $a;
    }
}

$test = new A(10);

Agora, vamos serializar e $ test unserialize:

var_dump(unserialize(serialize($test)));

Nós temos :

object(A)[2]
  public 'a' => int 10

ou seja, um objecto, instância de classe A.


Agora, vamos fazer o mesmo com JSON:

var_dump(json_decode(json_encode($test)));

Nós agora só tem uma instância de stdClass:

object(stdClass)[2]
  public 'a' => int 10

JSON é bom para a troca de dados (o nformação 'classe A' é importante para PHP, mas provavelmente não tem muito sentido para outra aplicação); mas tem suas limitações também.

Respondeu 21/09/2009 em 03:07
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more