所以我有下面的 JSON,我想提取“token”下的“$t”值。继续 Go 代码...
{
  "@encoding": "iso-8859-1",
  "@version": "1.0",
  "service": {
    "auth": {
      "expiresString": {
        "$t": "2013-06-12T01:15:28Z"
      },
      "token": {
        "$t": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      },
      "expires": {
        "$t": "1370999728"
      },
      "key": {
        "$t": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
}
我有以下 Go 代码片段,可将 json 解组为接口。然后我一直努力到“token”的“$t”值。这种方法确实有效,但很丑陋。
我的问题:有没有比将每个地图转换为接口更快的方法来访问该值? 我对 Go 很陌生,不了解界面和地图的许多有用功能。
var f interface{}
jerr := json.Unmarshal(body, &f)
m := f.(map[string]interface{})
ser := m["service"].(map[string]interface{})
a := ser["auth"].(map[string]interface{})
tok := a["token"].(map[string]interface{})
token := tok["$t"]
fmt.Fprintf(w, "Token: %v\n", token)
提前致谢!