10
votes

JSON_ENCODE () s'attend à ce que le paramètre 2 soit long, une chaîne donnée

J'essaie de renvoyer un JSON à partir d'un service de repos à l'aide de ce code:

$categories = $categoriesController->listAll();
if($categories){
   header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
   header("Content-Type: application/json");
   echo json_encode($categories,JSON_PRETTY_PRINT);
}else{

}


3 commentaires

Quelle version de PHP est-elle exécutée votre serveur?


Mise à niveau vers au moins PHP 5.4.0 à utiliser json_pretty_print . (Vous voudrez peut-être activer les avis, il vous dira qu'il ne connaît pas la constante)


@Winterblood: Je cours 5.3.1, ce qui explique le problème. Merci beaucoup :)


3 Réponses :


1
votes

L'option json_pretty_print est uniquement disponible à partir de PHP 5.4


0 commentaires

24
votes

La constante json_pretty_print est uniquement disponible pour les versions PHP> = 5.4. Sa valeur est de 128, essayez donc de remplacer json_pretty_print avec 128 xxx


0 commentaires

5
votes

json_pretty_print code> a été introduit dans PHP 5.4.0 A >.

Si vous souhaitez rendre votre code plus lisible dans des versions antérieures de PHP, utilisez ces constantes au lieu de leurs valeurs numériques. Notez que j'ai mis la version devenue chacun devenue disponible - si vous utilisez une option dans une version antérieure de PHP, ne vous attendez pas à ce qu'elle fonctionne. P>

<?php
   // json_encode() options
   define('JSON_HEX_TAG',                1);    // Since PHP 5.3.0
   define('JSON_HEX_AMP',                2);    // Since PHP 5.3.0
   define('JSON_HEX_APOS',               4);    // Since PHP 5.3.0
   define('JSON_HEX_QUOT',               8);    // Since PHP 5.3.0
   define('JSON_FORCE_OBJECT',           16);   // Since PHP 5.3.0
   define('JSON_NUMERIC_CHECK',          32);   // Since PHP 5.3.3
   define('JSON_UNESCAPED_SLASHES',      64);   // Since PHP 5.4.0
   define('JSON_PRETTY_PRINT',           128);  // Since PHP 5.4.0
   define('JSON_UNESCAPED_UNICODE',      256);  // Since PHP 5.4.0

   // json_decode() options
   define('JSON_OBJECT_AS_ARRAY',        1);    // Since PHP 5.4.0
   define('JSON_BIGINT_AS_STRING',       2);    // Since PHP 5.4.0
   define('JSON_PARSE_JAVASCRIPT',       4);    // upgrade.php

   // json_last_error() error codes
   define('JSON_ERROR_NONE',             0);    // Since PHP 5.3.0
   define('JSON_ERROR_DEPTH',            1);    // Since PHP 5.3.0
   define('JSON_ERROR_STATE_MISMATCH',   2);    // Since PHP 5.3.0
   define('JSON_ERROR_CTRL_CHAR',        3);    // Since PHP 5.3.0
   define('JSON_ERROR_SYNTAX',           4);    // Since PHP 5.3.0
   define('JSON_ERROR_UTF8',             5);    // Since PHP 5.3.3
   define('JSON_ERROR_RECURSION',        6);    // Since PHP 5.5.0
   define('JSON_ERROR_INF_OR_NAN',       7);    // Since PHP 5.5.0
   define('JSON_ERROR_UNSUPPORTED_TYPE', 8);    // Since PHP 5.5.0
?>


0 commentaires