`
z610
  • 浏览: 39216 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php json encode decode

 
阅读更多

对于老的php版本是没有json_encode 和json_decode函数的,但是又想使用这个功能。下边就是一个用php代码写的json encode 和decode 的函数。

 

 

function fromJSON ( $json, $assoc = false ) {

 

  /* by default we don't tolerate ' as string delimiters

     if you need this, then simply change the comments on

     the following lines: */

 

   $matchString = '/(".*?(?<!\\\\)"|\'.*?(?<!\\\\)\')/';

  //$matchString = '/".*?(?<!\\\\)"/';

  

  // safety / validity test

  $t = preg_replace( $matchString, '', $json );

  $t = preg_replace( '/[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/', '', $t );

  if ($t != '') { return null; }

 

  // build to/from hashes for all strings in the structure

  $s2m = array();

  $m2s = array();

  preg_match_all( $matchString, $json, $m );

  foreach ($m[0] as $s) {

    $hash       = '"' . md5( $s ) . '"';

    $s2m[$s]    = $hash;

    $m2s[$hash] = str_replace( '$', '\$', $s );  // prevent $ magic

  }

  

  // hide the strings

  $json = strtr( $json, $s2m );

  

  // convert JS notation to PHP notation

  $a = ($assoc) ? '' : '(object) ';

  $json = strtr( $json, 

    array(

      ':' => '=>', 

      '[' => 'array(', 

      '{' => "{$a}array(", 

      ']' => ')', 

      '}' => ')'

    ) 

  );

  

  // remove leading zeros to prevent incorrect type casting

  $json = preg_replace( '~([\s\(,>])(-?)0~', '$1$2', $json );

  

  // return the strings

  $json = strtr( $json, $m2s );

 

  /* "eval" string and return results. 

     As there is no try statement in PHP4, the trick here 

     is to suppress any parser errors while a function is 

     built and then run the function if it got made. */

  $f = @create_function( '', "return {$json};" );

  $r = ($f) ? $f() : null;

 

  // free mem (shouldn't really be needed, but it's polite)

  unset( $s2m ); unset( $m2s ); unset( $f );

 

  return $r;

}

 

/**

 * Encodes a PHP variable into a JSON string.

 * @param mixed $value A PHP variable to be encoded.

 */

function toJSON ( $value ) {

 

  if ($value === null) { return 'null'; };  // gettype fails on null?

 

  $out = '';

  $esc = "\"\\/\n\r\t" . chr( 8 ) . chr( 12 );  // escaped chars

  $l   = '.';  // decimal point

  

  switch ( gettype( $value ) ) 

  {

    case 'boolean':

      $out .= $value ? 'true' : 'false';

      break;

      

    case 'float':

    case 'double':

      // PHP uses the decimal point of the current locale but JSON expects %x2E

      $l = localeconv();

      $l = $l['decimal_point'];

      // fallthrough...

 

    case 'integer':

      $out .= str_replace( $l, '.', $value );  // what, no getlocale?

      break;

 

    case 'array':

      // if array only has numeric keys, and is sequential... ?

      for ($i = 0; ($i < count( $value ) && isset( $value[$i]) ); $i++);

      if ($i === count($value)) {

        // it's a "true" array... or close enough

        $out .= '[' . implode(',', array_map('toJSON', $value)) . ']';

        break;

      }

      // fallthrough to object for associative arrays... 

 

    case 'object':

      $arr = is_object($value) ? get_object_vars($value) : $value;

      $b = array();

      foreach ($arr as $k => $v) {

        $b[] = '"' . addcslashes($k, $esc) . '":' . toJSON($v);

      }

      $out .= '{' . implode( ',', $b ) . '}';

      break;

 

    default:  // anything else is treated as a string

      return '"' . addcslashes($value, $esc) . '"';

      break;

  }

  return $out;

  

}

分享到:
评论

相关推荐

    PHP json_encode() 和 json_decode()

    在PHP编程语言中,`json_encode()` 和 `json_decode()` 是两个非常重要的函数,它们用于在PHP和JSON数据格式之间进行转换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于人阅读和编写,...

    jQuery JSON with PHP json_encode and json_decode

    "jQuery JSON with PHP json_encode and json_decode"这个主题涉及到如何利用JSON(JavaScript Object Notation)这一轻量级的数据交换格式,结合PHP的`json_encode`和`json_decode`函数,实现前后端之间的数据通信...

    json_decode,json_encode 使用日志(1)

    在PHP中,`json_decode`和`json_encode`是两个非常关键的函数,用于将JSON字符串转换为PHP变量,以及将PHP变量转换为JSON字符串。这篇日志将深入探讨这两个函数的使用方法和注意事项。 ### `json_decode` 函数 `...

    PHP json_encode与json_decode.rar

    在PHP中,`json_encode`和`json_decode`是两个非常重要的函数,它们主要用于JSON(JavaScript Object Notation)数据格式的编码和解码。JSON是一种轻量级的数据交换格式,因其简洁、易读且易于机器解析而被广泛应用...

    json_decode 索引为数字时自动排序问题解决方法.docx

    在给定的例子中,通过`json_encode`函数将一个包含日期和股票信息的复杂结构转换成JSON字符串,并尝试用`json_decode`进行解码。然而,在这个过程中,发现了一些问题: 原始的JSON字符串如下: ```json { "code": ...

    Json_decode 解析json字符串为NULL的解决方法(必看)

    在PHP中,经常需要处理JSON格式的数据,而`json_decode()`函数是用来解析JSON字符串的主要方式。但是有时候我们会发现,即使是看似完整的JSON字符串,在使用`json_decode()`函数解析后返回的却是NULL,这会让人困惑...

    php中json_decode()和json_encode()的使用方法.docx

    在PHP中,`json_decode()`和`json_encode()`是两个非常重要的函数,它们主要用于JSON(JavaScript Object Notation)数据格式的编码与解码。JSON是一种轻量级的数据交换格式,因其简洁、易于阅读和编写,同时也容易...

    php-json:函数 json_encode 和 json_decode 用于早期版本的 PHP (&lt; 5.2.0)

    见和系统要求 * PHP* mbstring extension* Charset UTF-8使用 php-json 如果您有错误“调用未定义的函数 json_encode() 或 json_decode()”,只需添加: require_once("phpJson.class.php");或者 require_once(...

    json:用于 php json encodedecode 函数的 Json 包装器

    用于 php json 编码/解码功能的 json 包装器 &lt;?php use Json \ JsonArrayDecoder ; use Json \ Exception \ JsonException ; try { $ string = '{"name":"value"}' ; $ decoder = new JsonArrayDecoder (); $...

    json_decode:json_decode_cn(PHPjson_decode非UNICODE版)和json_decode_fix(PHPjson_decode兼容js版)

    ##json_decode_fixPHP的json_encode总有一些不通用的缺陷,例如不能解析js的json对象(当键名没有引号时)。json_decode_fix即可以解决部分bug,简单测试过string,integer,boolean等类型。继续测试中。

    PHP实现json_decode不转义中文的方法

    在处理JSON数据时,了解`json_encode` 和 `json_decode` 的正确使用方式以及如何处理中文字符,对于编写健壮的PHP应用非常重要。同时,熟悉相关在线工具,可以方便地进行数据验证和格式调整,提高开发效率。

    使用PHP json_decode可能遇到的坑与解决方法

    在PHP开发过程中,`json_decode`函数经常被用于将JSON格式的数据转换成PHP变量。然而,这个函数在处理特定情况时可能会带来一些不预期的行为,尤其是涉及到空对象和空数组时。本文主要讨论了在使用`json_decode`时...

    关于php中的json_encode()和json_decode()函数的一些说明

    本文针对PHP中的json_encode()和json_decode()函数进行详细说明。这两个函数在PHP开发中广泛使用,用于在JavaScript Object Notation (JSON)格式与PHP数据类型之间转换。了解这两个函数的用法,对于实现前后端数据...

    php json_encode与json_decode详解及实例

    ### 知识点详解 ...总结来说,`json_encode`与`json_decode`是处理JSON数据的基本函数,它们在PHP开发中非常常见,尤其是在处理Web API或数据存储方面。掌握它们的使用技巧和细节对于开发人员来说非常重要。

    浅析PHP中json_encode与json_decode的区别

    一、json_encode() 对变量进行JSON编码 语法:json_encode($value[,$options=0]) 注意: 1、$value为要编码的值,且该函数只对UTF8编码的数据有效; 2、options:由以下常量组成的二进制掩码:JSON_HEX_QUOT, ...

    php使用json_decode后数字对象转换成了科学计数法的解决方法

    在PHP编程中,经常需要处理JSON格式的数据,`json_decode`是PHP提供的一个用于将JSON字符串转换为PHP变量的内置函数。然而,在某些情况下,当你使用`json_decode`解析包含大数字的JSON字符串时,PHP可能会自动将这些...

    PHP中json_encode、json_decode与serialize、unserialize的性能测试分析

    据他所说,json_encode和json_decode比内置的serialize和unserialize函数要高效。 于是我决定动手实验,证实一下同事所说的情况是否属实。 实验分别在PHP 5.2.13和PHP 5.3.2环境下进行。 用同一个变量,分别用以上...

    json:围绕json_encode()和json_decode()的简单包装,用于捕获任何错误而无需执行json_last_error()

    围绕json_encode()和json_decode()的简单包装,用于捕获任何错误而无需执行json_last_error() 。 在PHP 7.3中,这些函数将。 use Eastwest \ Json \ Json ; use Eastwest \ Json \ JsonException ; try { $ json =...

    php中json_decode()和json_encode()的使用方法

    在PHP中,`json_decode()`和`json_encode()`是两个非常重要的函数,它们主要用于处理JSON(JavaScript Object Notation)格式的数据。JSON是一种轻量级的数据交换格式,它以文本形式存储和传输数据,易于人阅读和...

Global site tag (gtag.js) - Google Analytics