dousong2023 2013-02-18 04:59
浏览 23
已采纳

转到:JSON值未解析?

I have very simple test: http://play.golang.org/p/wY4sN9AUky. Config parsed from JSON, first string value parsed OK, but second parsed to empty string, but it is not.

type Config struct {
    Address      string "address"
    Debug        bool   "debug"
    DbUrl        string "dburl"
    GoogleApiKey string "google_api_key"
}

func (cfg *Config) read(json_code string) {
    if e := json.Unmarshal([]byte(json_code), cfg); e != nil {
        log.Printf("ERROR JSON decode: %v", e)
    }
}

func main() {
    var config Config
    config.read(`{
  "address": "10.0.0.2:8080",
  "debug": true,
  "dburl": "localhost",
  "google_api_key": "the-key"
}`)
    log.Printf("api key %s", config.GoogleApiKey)  // <- empty string. why?
    log.Printf("address %v", config.Address)
}
  • 写回答

1条回答 默认 最新

  • dongyukang7006 2013-02-18 05:11
    关注

    You're specifying your JSON names incorrectly in the struct.

    GoogleApiKey string "google_api_key"
    

    should be

    GoogleApiKey string `json:"google_api_key"`
    

    The JSON package looks for the json header in the text. The backtick delimits a raw string which allows us to include the quotes around google_api_key.

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

    package main
    
    import (
      "log"
      "encoding/json"
    )
    
    type Config struct {
      Address string `json:"address"`
      Debug bool `json:"debug"`
      DbUrl string `json:"dburl"`
      GoogleApiKey string `json:"google_api_key"`
    }
    
    func (cfg *Config) read(json_code string) {
      if e := json.Unmarshal([]byte(json_code), cfg); e != nil {
        log.Printf("ERROR JSON decode: %v", e)
      }
    }
    
    func main() {
      var config Config
      config.read(`{
      "address": "10.0.0.2:8080",
      "debug": true,
      "dburl": "localhost",
      "google_api_key": "the-key"
    }`)
      log.Printf("api key %s", config.GoogleApiKey)
      log.Printf("address %v", config.Address)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序