alexistm / simple-json-php
Simple JSON for PHP使您能够轻松构建JSON并发送头信息。主要目的是速度和易用性。
Requires
- php: >=5.3.0
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)