alexistm/simple-json-php

Simple JSON for PHP使您能够轻松构建JSON并发送头信息。主要目的是速度和易用性。

5.1.0 2020-06-25 06:32 UTC

This package is auto-updated.

Last update: 2024-09-14 13:47:44 UTC


README

简介

Simple JSON for PHP简化了json_encode函数。您不必创建一个Stdclass然后再进行json_encode,发送头信息并echo json,您只需创建对象并使用$json->send();

优点

  • 简单:与Stdclass一样简单,内置函数。
  • 快速:JSON使用native json_encode()进行编码
  • 可靠:自动发送头信息
  • 完整:您可以添加对象、属性或数组
  • 回调/变量或简单地JSON选项
  • 与JSONP兼容
  • 与JQuery兼容

缺点

  • 针对对象进行了优化,因为JSON是对象表示法。

用法

<?php

    include('../includes/json.php');
  
    use \Simple\json;
    
    $json = new json();
  
    // Objects to send (fetched from the DB for example)
    $object = new stdClass();
    $object->LastLog = '123456789123456';
    $object->Password = 'Mypassword';
    $object->Dramatic = 'Cat';
    $object->Things = array(1,2,3);
    
    // Forge the JSON
    $json->data = $object;
    $json->user = AlexisTM;
    $json->status = 'online';
    
    // Send the JSON
    $json->send();
?>

发送您想要的json

构造函数允许您发送JSON、带有回调的JSONP或变量。

简单的JSON

  $json->send(options);
  > {  ...  }

JSONP回调

  $json->send_callback('myCallback', options);
  > myCallback({  ...  });

变量JSONP

  $json->send_var('myVariable', options);
  > var myVariable = {  ...  };

选项

选项是传递给json_encode的默认选项示例-4366

JSON_HEX_TAG 
echo "Apos: ",    json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot: ",    json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp: ",     json_encode($a, JSON_HEX_AMP), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
echo "All: ",     json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE)

输出

Normal: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"]
Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
Quot: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
Unicode: ["<foo>","'bar'","\"baz\"","&blong&","é"]
All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"]

例如

$json->send(JSON_HEX_APOS | JSON_UNESCAPED_UNICODE);

HTML/JS部分示例

这个库提供了强大的JSON API功能。但如果没有前端,API就毫无用处。以下是些示例。

使用JQuery.ajax的原始json回调

$.ajax({
  dataType: "json",
  url: 'http://example.com',
  data: data,
  done: function(json) {
    alert(json);
  }
}); 

使用JQuery.getJSON的原始json回调

$.getJSON('http://example.com',
data,
function(json) {
  alert(json);
});

用于动态加载JSONP的遗留javascript

function load_script(url) {
  var s = document.createElement('script'); 
  s.src = url;
  document.body.appendChild(s);
}

function load_scripts() {
  load_script('http://json.api/users/list');
}

window.onload=load_scripts;

验证JSON

要验证JSON,您可以通过make()方法获取JSON字符串,然后通过另一个库传递。

$jsonString = $json->make();

了解愚蠢的错误

  • PHP脚本的文件格式必须是UTF-8 Without BOM。否则,JSON会在JQuery AJAX请求中损坏。
  • 您可以通过在JQuery请求中请求文本而不是JSON类型来绕过文件格式,然后使用JSON,然后自己解析它。
  • 如果您使用命名空间,您可以通过new \Simple\json()调用JSON类
  • 如果您使用use \Simple;,您可以通过new Simple\json()调用JSON类
  • 如果您使用use \Simple\json;,您可以通过new json()调用JSON类

贡献

要贡献,请与我联系!第一个分支对我来说将是极好的!

注意

版本4中包含的原因是速度。我在想使用这个库的速度有多快,经过一些测试,它显示它比本地函数慢6倍。因此,为了我自己,它必须被重写。

现在与native json_encode一样快,而且根本不需要思考。

许可证

此作品受MIT许可证保护。简而言之:您必须在信用中添加Alexis Paques,但您可以将其用于封闭源代码的商业项目。

接下来是什么?

显然的下一步是添加路由,这是创建强大API所需的。

参考

信息:https://en.wikipedia.org/wiki/JSONP

验证器:http://json.parser.online.fr

ECMA-404: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf

json_encode: https://php.ac.cn/manual/zh/function.json-encode.php

JSON PHP库的比较: http://gggeek.altervista.org/sw/article_20061113.html

JSON API标准: https://jsonapi.fullstack.org.cn/

致谢

Alexis PAQUES (@AlexisTM)