rygilles/smart-json-reducer

此软件包已被弃用,不再维护。未建议替代软件包。

通过使用权重截断字符串字段来减少JSON对象大小的助手

dev-master 2018-11-08 14:33 UTC

This package is auto-updated.

Last update: 2023-11-29 02:17:10 UTC


README

StyleCI Build Status GitHub

通过使用权重截断字符串字段来减少JSON对象大小的助手。

要求

  • PHP >= 5.5

安装

通过 Composer

$ composer require rygilles/smart-json-reducer

smart-json-reducer 的基本用法

重要:结果JSON内部对象值将被转换为数组(待优化和修复...

如果没有达到 $maxSize 大小(以字节为单位),则不会修改JSON字符串。

$weights 参数必须是一个数组,键为“点样式”路径,值为权重(将自动归一化)。

此库的第一个版本不会将节省的空间重新分配给其他字段,最终的JSON字符串大小将显著减小。待优化和修复...

<?php

// This file is generated by Composer
require_once __DIR__ . '/vendor/autoload.php';

$foo = new \stdClass();
		
$foo->foo1 = 'Sapiente repellat consectetur tempore ut omnis error voluptate ipsum. ' .
    'Cum nihil temporibus vel sunt deserunt nisi unde. Ipsa aperiam qui sed harum molestiae qui consectetur. ' .
    'Commodi voluptatem maiores';

$foo->foo2 = 'Eligendi officiis sed aspernatur totam quia explicabo. ' .
    'Doloribus eum quisquam officiis. Error pariat';

$foo->foo = [
    'bar' => 'Non qui molestias aliquam laboriosam. Nulla omnis ',
    'bar2' => 'Ut rerum velit eum commodi. Qui ea et enim cupiditate. Sequi nisi iure qui '
];

$maxSize = 200;

$weights = [
    'foo1' => 2,
    'foo2' => 5,
    'foo.bar' => 3,
];

// {"foo1":"Sapiente repellat consectetur tempore ut omnis error voluptate ipsum. Cum nihil temporibus vel sunt deserunt nisi unde. Ipsa aperiam qui sed harum molestiae qui consectetur. Commodi voluptatem maiores","foo2":"Eligendi officiis sed aspernatur totam quia explicabo. Doloribus eum quisquam officiis. Error pariat","foo":{"bar":"Non qui molestias aliquam laboriosam. Nulla omnis ","bar2":"Ut rerum velit eum commodi. Qui ea et enim cupiditate. Sequi nisi iure qui "}}
$json = \json_encode($foo);

// {"foo1":"Sapiente repell","foo2":"Eligendi officiis sed aspernatur totam","foo":{"bar":"Non qui molestias aliqu","bar2":"Ut rerum velit eum commodi. Qui ea et enim cupiditate. Sequi nisi iure qui "}}
$resultJson = \Rygilles\SmartJsonReducer\Reducer::reduce($json, $maxSize, $weights);

测试

phpUnit 是必需的(开发依赖项)

使用此命令运行测试套件

composer test

许可证

smart-json-reducer 在 MIT 许可证下授权 - 有关详细信息,请参阅 LICENSE 文件