2 回答

TA貢獻1802條經驗 獲得超10個贊
這是一個示例保持界面:https : //play.golang.org/p/Eu6Hj6ddSE
只要改變: Charts interface{}女巫Charts []interface{} 。接口上,如果v是你ChartOptins然后讓你用LEN()運算符
fmt.Println(len(v.Charts.([]interface{})))

TA貢獻1788條經驗 獲得超4個贊
據我了解,您只需要定義用于正確映射 json 的結構。它可以是這樣的:
package main
import (
"encoding/json"
"fmt"
"strings"
)
type ChartOptins struct {
Filters map[string]interface{} `json:"filters"`
Charts map[string][]Chart `json:"charts"`
}
type Chart struct {
Name string `json:"name"`
Type string `json:"type"`
}
func main() {
const jsonStream = `{
"filters": { "dayStart": "oneortwo", "dayEnd": "oneorthree", "timePeriods": [ [ "qqq", "www" ] ], "lines": [ "first", "avokado", "drunduki" ] },
"charts": { "noagg": [ { "name": "HOLD", "type": "line" }, { "name": "UKKR", "type": "line" }, { "name": "SVO", "type": "line" } ], "oracle": [ { "name": "TDD", "type": "line" } ] }
}`
var co ChartOptins
json.NewDecoder(strings.NewReader(jsonStream)).Decode(&co)
fmt.Println(co)
for k, v := range co.Charts {
fmt.Printf("key: %v\n", k)
for _, ch := range v {
fmt.Printf("Name: %v, type: %v\n", ch.Name, ch.Type)
}
}
}
- 2 回答
- 0 關注
- 208 瀏覽
添加回答
舉報