专栏首页毛毛v5golang向interface{}解析json时把所有的数字都当成float64

golang向interface{}解析json时把所有的数字都当成float64

最近发现 golang解析json时把所有的int,float,double等数字,向interface{}解析时都当成float64(当然被双信号包围的数字除外,任何被双引号包围的,都是字符串。),不知道是golang的内部约定还是啥。

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    var v map[string]interface{}
    jsonstr := `{"id":13,"name":"胖胖","weight":216.5,"dd":"123"}`
    json.Unmarshal([]byte(jsonstr), &v)
    for k, v1 := range v {
        fmt.Print(k, " = ")
        switch v1.(type) {
        case int:
            fmt.Println(v1, "is an int value.")
        case string:
            fmt.Println(v1, "is a string value.")
        case int64:
            fmt.Println(v1, "is an int64 value.")
        case float64:
            fmt.Println(v1, "is an float64 value.")
        default:
            fmt.Println(v1, "is an unknown type.")
        }
    }
}

输出如下:

API server listening at: 127.0.0.1:36104
weight = 216.5 is an float64 value.
dd = 123 is a string value.
id = 13 is an float64 value.
name = 胖胖 is a string value.
Process exiting with code: 0

仅作记录。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • OBS推流按钮堆栈信息

    xiny120
  • ffmpeg 片头加水印

    xiny120
  • 把cef3集成到MFC中的一些坑

    cef3变化太大了。要注意版本。笔者所用版本为:cef_binary_3.3626.1895.g7001d56_windows32 版本。在将cef3集成到MF...

    xiny120
  • IDA解析so文件异常(Binary data is incorrect maximum possible value is xx)

    小小咸鱼YwY
  • jsp 内置对象 登录 cookie + session

    mySoul
  • Swift 5.2 将KeyPaths用作函数

    Swift 5.2的新功能之一:能够将KeyPaths用作函数。如果您只在闭包中返回某个KeyPath的值,这将非常有用。

    韦弦zhy
  • Java基础系列(四十五):集合之Map

    Map是一个接口,代表的是将键映射到值的对象。一个映射不能包含重复的键,每个键最多只能映射到一个值。

    山禾说
  • Git 提交缺少Change-Id

    Git 提交时时候提示如下:主要提示你的提交缺少了Change-Id,主要之前进行了几次git rebase -i 错删了Change-Id导致的

    程序手艺人
  • 一款很不错的FLASH时种插件

    小小许
  • 【BERT系列】—— 将Tensorflow格式的模型转换为Pytorch格式的模型

    以BERT为代表的预训练模型是目前NLP领域最火热的方向,但是Google发布的 BERT 是Tensorflow格式的,这让使用pytorch格式 程序猿 们...

    Dendi

扫码关注云+社区

领取腾讯云代金券