1. 首页
  2. 主题
  3. Go语言

异种类型结构如何解析

moryaden · · 1358 次点击
有这么一个json结构 ```json [ [1122334455, "11", "22", "33"], [1234, "11", "22", "33"], [1234, "11", "22", "33"] ] ``` 用interface{}去接,虽然能解析出来,但类型不对。 有没有更优雅的办法呢? 下面的是我最挫的办法 ```golang var resp = make([]interface{}, 0) err = json.Unmarshal(body, &resp) ```
但实际用interface自动接收到的,第一个类型会识别成float64,还需要自己转换成int,后续的都是字符串。 后续代码我是这样写的。 比直接送一个struct引用进去复杂了很多,很丑。 ```golang func main() { var data = `[[ 152551818000, "9945.0001", "9955", "9933.2443", "9933.2444", "59.82917335" ], [ 152551836000, "9933.2444", "9933.2444", "9910.0001", "9910.0001", "90.72357222" ]]` var arr = make([]interface{}, 0) err := json.Unmarshal([]byte(data), &arr) if err != nil { log.InfoError(err) return } for _, item := range arr { switch t := item.(type) { case []interface{}: ts := t[0] switch realvalue := ts.(type) { case float64: var v int v = int(realvalue) log.Infof("ts = %v", v) } default: log.Info("uknown type") } } } ```
#2
更多评论
这个从语义上就是[]interface{},没啥不优雅的地方。
#1

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中