在使用json_decode类似这样解析json_decode(file_get_contents(‘500MB-users.json’))非常大的JSON文件数据时,往往会非常占用内存,导致程序不能正常运行。如果使用JSON Machine代替json_decode方法,则处理非常大的JSON文档时速度会非常快,而且不会占用更大的内存。下面介绍JSON Machine的具体使用流程。
一、安装JSON Machine类
国内镜像站点:https://gitcode.com/gh_mirrors/js/json-machine,只需下载src里的内容,然后在自己项目中存放第三方类库的地方,建立一个文件夹名为JsonMachine(只能是这个名字),然后把下载下来的内容放到里面即可;在需要使用的地方,利用spl_autoload_register函数注册类实现类自动加载
spl_autoload_register(require_once '网站路径/JsonMachine/autoloader.php');
或者使用composer命令也可以自动安装,实现类自动加载
composer require halaxa/json-machine
require __DIR__ . '/vendor/autoload.php';//自动加载JsonMachine类和对应依赖库
二、使用JSON Machine类代替json_decode
use JsonMachine\Items as JsonMachine; $users = Items::fromFile('500MB-users.json'); foreach ($users as $id => $user) { // 处理 $user 数据 var_dump($user->name); }
除此之外,JSON Machine还提供了Items::fromString,Items::fromStream,Items::fromIterable等方法可供使用,可以参考下载下来的Items.php或者官方项目说明文档README.md