簡體   English   中英

將多維JSON文件映射到Go結構

[英]Mapping a multiple dimensional JSON file to a Go struct

毫無疑問,快速而簡單的問題,但讓我難過的一個問題。

Sophie.conf

{
    "host": {
        "domain": "localhost",
        "port": 5000
    }
}

main.go

...

type Config struct {
    domain string `json:"host.domain"`
    port   int    `json:"host.port"`
}

...

func loadConfig() {
    buffer, _ := ioutil.ReadFile(DEFAULT_CONFIG_FILE)
    fmt.Println(string(buffer))
    json.Unmarshal(buffer, &cfg)
}

...

如果我打印,那不起作用

fmt.Printf("host: %s:%d\n", cfg.domain, cfg.port)

輸出是:

host: :0

我該怎么做呢? 謝謝!

在您的情況下,您應該聲明外部Config結構。 在它里面你應該定義Host字段,在我的例子中它是匿名結構,但你可以將它提取為顯式結構。

一個注意事項 - 你應該導出'structs'字段(大寫json.Unmarshal名稱),或者json.Unmarshal (或json.Marshal )將無法正確處理數據,你可以在Play Golang上試驗字段。

http://play.golang.org/p/msu73bwXNb

package main

import (
  "encoding/json"
  "fmt"
)

const jsonDocument = `
{
    "host": {
        "domain": "localhost",
        "port": 5000
    }
}
`

type Config struct {
  Host struct {
    Domain string
    Port   int
  }
}

func main() {
  cfg := &Config{}
  json.Unmarshal([]byte(jsonDocument), cfg)
  fmt.Printf("host: %s:%d\n", cfg.Host.Domain, cfg.Host.Port)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM