嵌套的Json数组构造golang中的un-marshalling
问题描述:
我主要看着在golang中取消编组下面的JSON数组。嵌套的Json数组构造golang中的un-marshalling
{
"status":{"code":"SUCCESS"},
"result": {
"total_records":1,
"records": [{
"last_modified_timestamp":1501209015807,
"dns_servers":null,
"is_secured":false,
"nis_domains":null,
"storage_platform_resource_key":"e1ee32f9-6576-11e7-82a8-00a098697714",
"name":"vs1",
"nis_servers":null,
"created_timestamp":1501208944094,
"dns_domains":null,
"key":"f59dacca-7379-11e7-82a8-00a098697714"
}]
}
}
我正在寻找这里提取“关键”字段。试过下面的语法,但不能成功地得到我想要的。
var dat map[string]interface{}
// Unmarshall the JSON body
if err := json.Unmarshal(body, &dat); err != nil {
fmt.Println(err)
}
svmRecordsMap := dat["result"].(map[string]interface{})["records"]
fmt.Printf("%+v", svmRecordsMap)
result := (svmRecordsMap["key"].([]interface{})[0]).(map[string]interface{})
在这里的任何帮助将非常感激。请注意,我没有看到定义相应的结构并进行复制。
谢谢!
答
我让你一个例子:https://play.golang.org/p/tReMMtGA2V
package main
import (
"encoding/json"
"fmt"
)
func main() {
txt := `{
"status":{"code":"SUCCESS"},
"result": {
"total_records":1,
"records": [{
"last_modified_timestamp":1501209015807,
"dns_servers":null,
"is_secured":false,
"nis_domains":null,
"storage_platform_resource_key":"e1ee32f9-6576-11e7-82a8-00a098697714",
"name":"vs1",
"nis_servers":null,
"created_timestamp":1501208944094,
"dns_domains":null,
"key":"f59dacca-7379-11e7-82a8-00a098697714"
}]
}
}`
var dat map[string]interface{}
if err := json.Unmarshal([]byte(txt), &dat); err != nil {
fmt.Println(err)
}
svmRecordsMap := dat["result"].(map[string]interface{})["records"]
fmt.Printf("%+v", svmRecordsMap)
result := (svmRecordsMap.([]interface{})[0]).(map[string]interface{})
fmt.Println(result)
}
在您的例子要删除“[关键]”当您访问svmRecordsMap
你能在“不能够扩展到顺利拿到了我想”?你有什么具体问题? – Adrian
看看这个问题/答案:https://*.com/questions/20154606/marshall-and-unmarshall-json-content-in-golang?rq=1 –
[Marshall and UnMarshall JSON Content in GoLang](https://*.com/questions/20154606/marshall-and-unmarshall-json-content-in-golang) –