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条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路