go readfile json

https://oktools.net/json2go  json转go struct

 

package main

import (
    "io/ioutil"
    "encoding/json"
    "fmt"
)
type AutoGenerated struct {
    NodeName string `json:"node_name"`
    UpdateInterval int `json:"update_interval"`
    TCPMessagePort int `json:"tcp_message_port"`
    AlarmLevel int `json:"alarm_level"`
    SentinelEnable int `json:"sentinel_enable"`
    LanguageMode int `json:"language_mode"`
    ElasticEnable int `json:"elastic_enable"`
    SystemMode int `json:"system_mode"`
    AutoRequest int `json:"auto_request"`
    PollEnable int `json:"poll_enable"`
    PollInterval int `json:"poll_interval"`
    PollXavier int `json:"poll_xavier"`
    Poll1060 int `json:"poll_1060"`
    PollP4 int `json:"poll_p4"`
    PollT4 int `json:"poll_t4"`
    ApplicationID string `json:"application_id"`
    WebSdk string `json:"web_sdk"`
    HwvcnDomain string `json:"hwvcn_domain"`
    HwvcnCallback string `json:"hwvcn_callback"`
    MinDiskSize int `json:"min_disk_size"`
    TaskManager TaskManager `json:"task_manager"`
    PluginManager PluginManager `json:"plugin_manager"`
    CameraManager CameraManager `json:"camera_manager"`
    PayloadManager PayloadManager `json:"payload_manager"`
    DependencyManager DependencyManager `json:"dependency_manager"`
    MetricCollector MetricCollector `json:"metric_collector"`
    Cloud Cloud `json:"cloud"`
    MessageServer string `json:"message_server"`
    PhotoServer string `json:"photo_server"`
    VideoServer string `json:"video_server"`
    PackageServer string `json:"package_server"`
    EventUploadPath string `json:"event_upload_path"`
    LogValidDays int `json:"log_valid_days"`
    UsscTaskTimeout int `json:"ussc_task_timeout"`
}
type TaskManager struct {
    RunnerCount int `json:"runner_count"`
    QueueSize int `json:"queue_size"`
}
type PluginManager struct {
    Plugins []string `json:"plugins"`
}
type CameraManager struct {
    Cameras string `json:"cameras"`
}
type Payloads struct {
    Name string `json:"name"`
    TypeID int `json:"type_id"`
    RunCondition int `json:"run_condition"`
    RunMode int `json:"run_mode"`
    MonopolyNum int `json:"monopoly_num"`
    Combination []interface{} `json:"combination"`
    Folder string `json:"folder"`
    Executable string `json:"executable"`
    Commandline string `json:"commandline"`
    HeartbeatTimeout int `json:"heartbeat_timeout"`
    ShutdownTimeout int `json:"shutdown_timeout"`
    RestartTrialCount int `json:"restart_trial_count"`
    Environment []interface{} `json:"environment"`
    LogControl int `json:"log_control"`
    SentinelKey int `json:"sentinel_key"`
    RollbackEnable int `json:"rollback_enable"`
}
type PayloadManager struct {
    MultiGpu int `json:"multi_gpu"`
    Payloads []Payloads `json:"payloads"`
}
type DependencyManager struct {
    Folder string `json:"folder"`
    Executable string `json:"executable"`
}
type MetricCollector struct {
    UpdateInterval int `json:"update_interval"`
    DiskUsagePath string `json:"disk_usage_path"`
}
type Cloud struct {
    TCPAddress string `json:"tcp_address"`
    HeartbeatInterval int `json:"heartbeat_interval"`
    RecvTimeout int `json:"recv_timeout"`
    RetransmitTimeout int `json:"retransmit_timeout"`
    RetransmitTrialCount int `json:"retransmit_trial_count"`
    TokenRefreshBefore int `json:"token_refresh_before"`
}

func main() {
    JsonParse := NewJsonStruct()
    v := AutoGenerated{}
    JsonParse.Load("./daemon.json", &v)
    fmt.Println(v.NodeName)
    fmt.Println(v.PayloadManager.MultiGpu)
    fmt.Println(v.PayloadManager.Payloads[1].Name)

    fmt.Println( len(v.PayloadManager.Payloads))


    for i := 0; i < len(v.PayloadManager.Payloads); i++ {
        fmt.Println( v.PayloadManager.Payloads[i].Name    )
    }

}


type JsonStruct struct {
}

func NewJsonStruct() *JsonStruct {
    return &JsonStruct{}
}

func (jst *JsonStruct) Load(filename string, v interface{}) {
    data, err := ioutil.ReadFile(filename)
    if err != nil {
        return
    }

    err = json.Unmarshal(data, v)
    if err != nil {
        return
    }
}

posted @ 2021-01-27 18:18  yangxl-dev  阅读(83)  评论(0)    收藏  举报