alglyzin / json

解码JSON字符串时,将所有浮点值转换为字符串

1.0.1 2020-11-30 07:04 UTC

This package is auto-updated.

Last update: 2024-09-29 05:56:05 UTC


README

当处理财务数据时,使用 json_decode() 解码JSON字符串时保持精度非常重要。唯一的解决方案是使用 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
    //    }