で複雑なJSON解析できません:このプログラムの開発と私は(設定/ synch.confで)このJSONをパースしたいgolang
{
"period" :"yy",
"exec_period" :
{
"start" : {
"month" : 1,
"week" : 2,
"day" : 3,
"hour" : 4,
"minute" : 5
},
"end" : {
"month" : 6,
"week" : 7,
"day" : 8,
"hour" : 9,
"minute" : 10
}
},
"backup" : [
{
"local_dir" : "directoryLo1",
"server_dir" : "directoryLo2",
"server_host" : "domaineName"
},
{
"local_dir" : "directoryLo1",
"server_dir" : "directorySe2",
"server_host" : "domaineName"
}
],
"incremental_save" : "1Y2M"
}
を:
として動作しませんpackage main
import (
"encoding/json"
"fmt"
"io/ioutil"
)
func main() {
content, err := ioutil.ReadFile("config/synch.conf")
if err == nil {
type date struct{
month float64
week float64
day float64
hour float64
minute float64
}
type period struct{
start date
end date
}
type backupType []struct{
local_dir string
server_dir string
server_host string
}
type jason struct{
period string
exec_period period
backup backupType
incremental_save string
}
var parsedMap jason
err := json.Unmarshal(content, &parsedMap)
if err!= nil {
fmt.Println(err)
}
fmt.Println(parsedMap)
} else {
panic(err)
}
}
ここ
{ {{0 0 0 0 0} {0 0 0 0 0}} [] }
はplay.golang.org
に同じ例である:出力されるように、予想さ
これはgoで可能かどうかわかりませんが、私はアクセス可能なマップ[文字列]インタフェース{}(またはそれを許可する別のオブジェクト)に格納されているjson.Unmarshal
関数の値を取得したかったのですたとえば、parsedMap["exec_period"]["end"]["minute"]
のような分の終わり(10)の値ですが、golang.orgの "Generic JSON withinterface {}"の部分を理解できません。
本当に、それは簡単でしたか? ありがとうございました! –
今、私の質問は、exec_periodの分の終わりの値にアクセスする方法ですか? 'parsedMap [" exec_period "] [" end "] [" minute "]'は機能しません。無効な操作:parsedMap ["exec_period"](タイプjasonのインデックス) '、最初の文字は大文字であるかどうか –
To値にアクセスするには、 'parsedMap.Exec_period.End.Minute'を使います。インターフェイスタイプアサーションよりもはるかにクリーンです! (私が答えに加えたように) – ANisus