go使用iris问题之数字变科学计数法


本文摘自网络,作者,侵删。

使用iris mvc做api,但返回的数据里的数字都变成了科学计数法: 3e5 这样的东西

看一下使用方式

func NewDefault() *iris.Application {
    app := iris.New()
    app.Logger().SetLevel("Debug")

    // 设置路径
    pathToAccessLog := "./log/access_log.%Y%m%d%H%M"
    // 设置多久分一个文件出来
    w, err := rotatelogs.New(
        pathToAccessLog,
        rotatelogs.WithMaxAge(24*time.Hour),
        rotatelogs.WithRotationTime(time.Hour))
    if err != nil {
        panic(fmt.Sprintf("rotate logs setup failure: %s", err))
    }

    ac := accesslog.New(w)
    ac.ResponseBody = true
    // 设置输出到控制台
    ac.AddOutput(app.Logger().Printer)
    // 应用中间件
    app.UseRouter(ac.Handler)

    // Register the recovery, after accesslog and recover,
    // before end-developer's middleware.
    app.UseRouter(recover.New())

    app.UseRouter(cors.AllowAll())
    app.Validator = validator.NewValidator()

    return app
}

func Run(port string) {
    app := commonctrl.NewDefault()
    mvcApp := mvc.New(app)
    mvcApp.Party("auth").Handle(new(AuthController))

    if err := app.Listen(port, iris.WithOptimizations); err != nil {
        _, _ = fmt.Fprintf(os.Stderr, "user service start failure: %s\n", err)
        return
    }
}
复制代码

期望与结果

{"code":0,"msg":"success","data":1619568000}

实际得到结果

{"code":0,"msg":"success","data":1619568e30}

解决方案

accesslog设置 BodyMinify=true

ac.BodyMinify = true
复制代码

原因

accesslog设置 ResponseBody=true 的以后,中间件对返回值进行了一次读写导致

1620399746118-wyv.png


iris在写入json的时候,可以配置参数来默认驼峰命名、空值省略等,accesslog在读取ResponseBody的时候会再进行加工


本文来自:掘金

感谢作者:eraise

查看原文:go使用iris问题之数字变科学计数法

相关阅读 >>

2021-03-18 Golang 以太坊大额转账转换问题

网站怎么没跳页操作,不过通过url能跳

Go 自定义error错误

Golang select

手撸Golang 学etcd 手写raft协议之12 单元测试

手撸Golang 基本数据结构与算法 堆

linux怎么安装Golang和dep(附错两个误解决方法)

Golang 协程占多大内存

Golang入门四:流程控制

龙芯GoGoGo!——龙芯平台上构建Go语言环境指南

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...