alglyzin/json

Convert all float values to string when decoding JSON string

1.0.1 2020-11-30 07:04 UTC

This package is auto-updated.

Last update: 2024-03-29 04:19:41 UTC


README

Когда вы имеете дело с финансами, очень важно не потерять точность при декодировании json строки с помощью json_decode(). Единственное обходное решение, - это использовать preg_replace для добавления кавычек в исходную строку JSON. Данный метод Json::float_safe($string) позволяет это сделать.

  • Не изменяет структуру самого JSON (пробелы, переносы...)
  • Обрамляет кавычками экспоненциальный формат числа
  • Работает достаточно быстро

Установка из composer:

composer require alglyzin/json

Пример использования:

<?php

    use alglyzin\Json\Json;

    $json = '  {
        "a": 0.00000001e23,
        "b": 0.00000001,
        "c": 10000000000.0e+45,
        "d": 0.00000001e-3,
        "e": 10.0E4,
        "f": 1000000000.0E-34,
        "g": 0.000000000000001,
        "h": 100000
    }';

    $json = Json::float_safe($json);

    echo $json;

    // echo $json:
    //    {
    //        "a": "0.00000001e23",
    //        "b": "0.00000001",
    //        "c": "10000000000.0e+45",
    //        "d": "0.00000001e-3",
    //        "e": "10.0E4",
    //        "f": "1000000000.0E-34",
    //        "g": "0.000000000000001",
    //        "h": 100000
    //    }