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

标签 json go

例如:

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

我一直在尝试制作的一个程序需要获取字符串形式的 ID,然后使用它来检查 LastSeen 中的时间。 我试过使用 simplejsonjsonq ,但仍然不知道该怎么做。

最佳答案

您可以使用 RawMessage 并使其更简单 (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\n", msg)

}

关于json - 获取 json 动态键名作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290618/

相关文章:

java - 如何以字符串形式获取字段,无论 Java 中的内容类型如何?

go - Go中结构的自定义扫描器

go - defer 语句是如何工作的

git - 在 Heroku 上部署 revel 应用程序

go - 在缓冲区接收数据时将 exec.Command 输出复制到文件

objective-c - 没有值的 AFNetworking JSON 数组

java - java中如何实现 map 列表的字符串转换

python - DRF 响应内容类型在测试期间设置为无

c# - 如何在调用 SQL Server 数据库调用的 Web 服务器上运行 AngularJS

高语 : panic on call of nil object's method