猿问

无法在 golang 中解析复杂的 json

我想解析这个 JSON(在 config/synch.conf 中):


{

    "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 http://play.golang.org/p/XoMJIDIV59 上的相同示例


我不知道这是否可以使用 go,但我想获取json.Unmarshal存储在 map[string]interface{}(或允许这样做的另一个对象)中的函数的值,例如,该值一分钟结束(10)是这样的:parsedMap["exec_period"]["end"]["minute"],但我不uderstand“通用JSON withinterface {}”的一部分,JSON和围棋在golang.org


三国纷争
浏览 195回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答