rygilles/smart-json-reducer

This package is abandoned and no longer maintained. No replacement package was suggested.

Helper to reduce JSON objects size applying truncates on string fields using weights

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

Helper to reduce JSON objects size applying truncates on string fields using weights.

Requirements

  • PHP >= 5.5

Install

Via Composer:

$ composer require rygilles/smart-json-reducer

Basic usage of smart-json-reducer

Important : The resulting JSON inner object values will be converted to array (Optimizations and fixes to come...)

The JSON string is not modified if the $maxSize size (in bytes) is not reached.

$weights parameter must be an array with "dot style" path as key and weight as value (normalized automatically).

The first version of this library doe not re-attribute gained space to others fields and final JSON string size will be significantly reduced. (Optimizations and fixes to come...)

<?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);

Tests

phpUnit is required (dev dependency)

Use this command to run test suite

composer test

License

smart-json-reducer is licensed under the MIT License - see the LICENSE file for details