drake900918 2014-04-25 02: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 14: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条)
编辑
预览

报告相同问题?