JSONLite 简化版的 JSON

jopen 10年前

介绍

JSONLite 是 JSON 的简化版。减少字符输出的同时,仍保持数据有效性。

建议PHP版本 >= 5.2.0 。

特性

  • Js 兼容模式,兼容Js语法。取消了不必要的双引号。

  • Strict 强类型模式,提供强类型输出与解析,可用于与强类型语言通讯。

    • 如 1.0 序列化和解序列后的类型均为 double,不会转换为 int 1。

  • Min 最小化模式,最小化输出数据,可用于日志打印。

  • 较为精确的错误位置和信息提示。

  • 解析时更为显性的暴漏格式错误

  • </ul>

    示例代码:

    require_once 'jsonlite.php';  $value = array(      'code'   => '123',      'msg'    => 'true str',      'null'   => null,      'new'    => '',      'double' => 1.0,  );  // 序列化  // Js兼容模式  $encoder = new JSONLiteEncoder($value);  echo $encoder->encode(), PHP_EOL;  // {code:"123",msg:"true str","null":null,"new":"",double:1}     // Strict强类型模式  $encoder = new JSONLiteEncoder($value, JSONLiteEncoder::TYPE_STRICT);  echo $encoder->encode(), PHP_EOL;  // {code:"123",msg:true str,"null":null,new:,double:1.0}     // Min最小化模式  $encoder = new JSONLiteEncoder($value, JSONLiteEncoder::TYPE_MIN);  echo $encoder->encode(), PHP_EOL;  // {code:123,msg:true str,"null":null,new:,double:1}     // 解序列  $jsonlite = '{code:123,msg:true str,"null":null,new:,double:1}';  $encoder = new JSONLiteDecoder($jsonlite);  var_export($encoder->decode());  /**   * array (   *     'code' => 123,   *     'msg' => 'true str',   *     'null' => NULL,   *     'new' => '',   *     'double' => 1,   * )   */

    体积对比

    根据测试数据计算,实际情况请另行估算。

    模式 JSON JSONLite 变化量 变化率
    array_js 92 92 0 0.00%
    array_strict 92 74 -18 19.57%
    array_min 92 70 -22 23.91%
    map_js 111 97 -14 12.61%
    map_strict 111 83 -28 25.23%
    map_min 111 81 -30 27.03%


    项目主页:
    http://www.open-open.com/lib/view/home/1419217834281