Eski php sürümleri ile uyumlu PHP json işleyicisi

4 Cevap php

PHP sürümü JSON destek seviyesini algılar ve doğal destek bulunamazsa, dıştan sağlanan JSON kitaplığında çağıran bir genel amaçlı PHP JSON kütüphane var mı? ... Ya, ben kendimi bu yazı vakit geçirmek için gidiyorum.

4 Cevap

Facebook kendi PHP Kütüphanesi'nde birini içerir. Bunu ödünç alabilir Umarım onlar sakıncası olmaz:

http://svn.facebook.com/svnroot/platform/clients/php/trunk/jsonwrapper/

Ben orada tam bir kütüphane bilmiyorum, ama ben küçük bir araştırma muhtemel birini bulabiliriz eminim. Ancak, burada beni iyi hizmet etmiş bir json_encode yerine geçer.

/**
     * 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) . '}';
        }
    }

Ben

Ayrıca function_exists("json_decode") için kontrol edebilir.

JSON işlevlerine Kullanıcı Katkıda Notları bazı çözüm uygulamaları var, örneğin here kodlamak kısmı için. Ama, ne kadar güvenilir bilmiyorum.

Bu kullanmış:

$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).']';

Json_encode çağrı olarak geri aynı sonuçları verdi