Existe-t-il une bibliothèque PHP JSON à usage général qui détecte le niveau de support JSON dans votre version de PHP et appelle une bibliothèque JSON externe si le support natif n'est pas trouvé? ... ou je vais passer du temps à l'écrire moi-même.PHP json handler compatible avec les anciennes versions php
Répondre
Facebook en inclure un dans leur bibliothèque PHP. Espérons qu'ils ne seront pas l'esprit si vous l'emprunter:
http://svn.facebook.com/svnroot/platform/clients/php/trunk/jsonwrapper/
Je ne sais pas d'une bibliothèque complète là-bas, mais je suis sûr un peu de recherche pourrait probablement trouver un. Cependant, voici un remplacement json_encode qui m'a bien servi.
/**
* json_encode2()
*
* @access public
* @param bool $a
* @return string
*/
public function json_encode2($a=false) {
if (is_null($a)) return 'null';
if ($a === false) return 'false';
if ($a === true) return 'true';
if (is_scalar($a))
{
if (is_float($a))
{
// Always use "." for floats.
return floatval(str_replace(",", ".", strval($a)));
}
if (is_string($a))
{
static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
}
else
return $a;
}
$isList = true;
for ($i = 0, reset($a); $i < count($a); $i++, next($a))
{
if (key($a) !== $i)
{
$isList = false;
break;
}
}
$result = array();
if ($isList)
{
foreach ($a as $v) $result[] = $this->json_encode2($v);
return '[' . join(',', $result) . ']';
}
else
{
foreach ($a as $k => $v) $result[] = $this->json_encode2($k).':'.$this->json_encode2($v);
return '{' . join(',', $result) . '}';
}
}
Je pense qu'il est assez facile, PHP 5.2.0 < = pas JSON. Il y a la bibliothèque PECL JSON (l'incarnation des fonctions json avant leur intégration en PHP) mais qui ne sera pas très utile non plus. Vous pouvez également vérifier function_exists("json_decode")
.
Les notes fournies par l'utilisateur aux fonctions JSON ont certaines implémentations de contournement, par ex. here pour la partie codage. Je ne sais pas à quel point ils sont fiables, cependant.
J'utilisé ceci:
$data = array();
$q = mysql_query("SELECT * FROM blah");
while ($r = mysql_fetch_array($q, MYSQL_ASSOC)) {
foreach ($r as $value) $data[] = '"' . addslashes($value) . '"';
}
echo '['.implode(', ', $data).']';
a donné les mêmes résultats que d'appeler en arrière json_encode
Cela aurait très peu de chances de se comporter comme json_encode dans les cas les plus simples. – mmcnickle
- 1. Magic quotes sur les anciennes versions et nouvelles de PHP
- 2. Test avec les anciennes versions de .Net
- 3. Contrôles ActiveX avec les anciennes versions Delphi
- 4. Anciennes versions d'Iphone sdk
- 5. Comment déboguer les anciennes versions du logiciel?
- 6. Les anciennes versions de Sonic Sub
- 7. Comment compresser les fichiers JSON avec PHP?
- 8. Comment trier les produits JSON avec PHP
- 9. Retrait sur les anciennes versions de l'API pour permettre des fonctionnalités limitées sur les anciennes versions du système d'exploitation
- 10. PHP: ReflectionClass est-il compatible avec l'avenir?
- 11. Enveloppe PHP compatible API avec PDFlib
- 12. php - combiner json avec json_decode
- 13. JSON avec php et Jquery
- 14. Test sur différentes versions de PHP
- 15. MPMoviePlayerViewController pour les anciennes versions de l'iPhone SDK
- 16. Référencement de DLL construites avec des versions .Net plus anciennes
- 17. Est-ce que Image Magick 6.2.4 est toujours rétrocompatible avec les anciennes versions?
- 18. dslVersion - Comment incrémenter mais toujours supporter les anciennes versions?
- 19. Le codage gzip est-il compatible avec JSON?
- 20. étendue par défaut dans les anciennes versions de rails
- 21. Comment puis-je élaguer les anciennes versions de Subversion?
- 22. Versions PHP "part de marché"
- 23. Paramètres json et php
- 24. php et JSON aide!
- 25. Poster objet JSON avec php (post http)?
- 26. Obtenir des données de JSON avec PHP
- 27. Les nouvelles versions de BJam prennent-elles en charge la compatibilité ascendante avec les anciennes versions de Boost?
- 28. Un peu perdu avec jquery + php + JSON
- 29. json encoder en php
- 30. php json encoder
Faire que "public" au lieu de "pulbic" dans la déclaration de méthode. –
Pourquoi ne pas éditer votre message? – middus
Comme le dit Pekka, j'embaquerais cette fonction dans un 'if (! Function_exists (" json_encode "))' et j'appellerais simplement cette fonction de remplacement 'json_encode()'. De cette façon, vous n'avez pas à vous inquiéter de savoir si vous devriez appeler 'json_encode()' ou 'json_encode2()' – Johrn