【发布时间】:2015-09-29 02:42:58
【问题描述】:
我正在将一些 JSON 解码为一个结构,我想处理未提供特定字段的情况。
结构:
type Config struct {
SolrHost string
SolrPort int
SolrCore string
Servers map[string][]int
}
要解码的 JSON:
{
"solrHost": "localhost",
"solrPort": 8380,
"solrCore": "testcore",
}
在解码JSON的方法中,我想检查map[string][]int是否已经初始化,如果没有,就这样做。
当前代码:
func decodeJson(input string, output *Config) error {
if len(input) == 0 {
return fmt.Errorf("empty string")
}
decoder := json.NewDecoder(strings.NewReader(input))
err := decoder.Decode(output)
if err != nil {
if err != io.EOF {
return err
}
}
// if output.Server.isNotInitialized...
return nil
}
我可以使用recover()吗?这是完成任务的“最佳”方式吗?
【问题讨论】:
-
顺便说一句,使用
err := json.Unmarshal([]byte(input), output); if err != nil { return err }更简单。
标签: json dictionary go