drake900918 2014-04-25 10:33
浏览 253
已采纳

获取JSON动态键名作为字符串?

For example:

{"id":
    {"12345678901234":
       {"Account":"asdf",
       "Password":"qwerty"
       "LastSeen":"1397621470",
       }
    }
}

A program I've been trying to make needs to get the id as a string and then later use it to check the time in LastSeen. I've tried using simplejson and jsonq,but still cant figure out how to do that.

  • 写回答

2条回答 默认 最新

  • dtg25862 2014-04-25 22:00
    关注

    You can use RawMessage and make it much simpiler (play with it) :

    package main
    
    import (
        "encoding/json"
        "fmt"
    )
    
    var data []byte = []byte(`{"id": {"12345678901234": {"Account":"asdf", "Password":"qwerty", "LastSeen":"1397621470"}}}`)
    
    type Message struct {
        Id   string
        Info struct {
            Account  string
            Password string
            LastSeen string
        }
    }
    
    func main() {
        var (
            tmpmsg struct {
                Data map[string]json.RawMessage `json:"id"`
            }
            msg Message
        )
        if err := json.Unmarshal(data, &tmpmsg); err != nil {
            panic(err) //you probably wanna use or something instead
        }
    
        for id, raw := range tmpmsg.Data {
            msg.Id = id
            if err := json.Unmarshal(raw, &msg.Info); err != nil {
                panic(err)
            }
        }
        fmt.Printf("%+v
    ", msg)
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况