英文:
How to set array value to a field in golang using reflect?
问题
我有一个包含以下字段的结构体:
type Config struct {
Address []string
Name string
}
我正在从一个以JSON格式存储的文件中读取这个Config的值:
{
"Address": ["xx.xx.xx.xx","xx.xx.xx.xx"],
"Name": "Name"
}
我使用反射来识别类型并将其值设置为Config。我能够使用func (v Value) SetString(x string)
这个反射中的内置方法来设置Name字段的值。是否有一种方法可以直接将[]string
的值设置到一个字段中?请帮忙解答。
英文:
I have a Struct with following fields
type Config struct {
Address[]string
Name string
}
I am reading the values for this Config from a file in JSON format
{
"Address": ["xx.xx.xx.xx","xx.xx.xx.xx"],
"Name":"Name"
}
I have used Reflect to identify the type and set its value to Config.I am able to set the value of Name field using
func (v Value) SetString(x string) which is an inbuilt method in reflect. Is there a way to set []string values directly to a field? Please help.
答案1
得分: 3
你可以使用json包来实现这个功能(它在内部使用反射):
package main
import (
"encoding/json"
"fmt"
)
type Config struct {
Address []string
Name string
}
var someJson = []byte(`{
"Address": ["xx.xx.xx.xx","xx.xx.xx.xx"],
"Name":"Name"
}`)
func main() {
var config Config
err := json.Unmarshal(someJson, &config)
if err != nil {
fmt.Println("error: ", err)
}
fmt.Printf("%v", config)
}
这段代码使用了json
包来解析JSON数据,并将其映射到Config
结构体中。然后,通过fmt.Printf
打印出解析后的config
对象。
英文:
You can use the json package for that (it uses reflect internally):
package main
import (
"encoding/json"
"fmt"
)
type Config struct {
Address []string
Name string
}
var someJson = []byte(`{
"Address": ["xx.xx.xx.xx","xx.xx.xx.xx"],
"Name":"Name"
}`)
func main() {
var config Config
err := json.Unmarshal(someJson, &config)
if err != nil {
fmt.Println("error: ", err)
}
fmt.Printf("%v", config)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论