我不习惯golang
。
当我要求时,我得到了以下日志。
我想解析日志并存储到struct
类型。
有人让我知道该怎么做?
提前致谢。
type ResultStruct struct{
id int
guid string
name string
}
for k, v := range data {
fmt.Print(v.id) fmt.Print(v.guid) fmt.Print(v.name)
}
[日志]
数据:[map [id:90001 guid:a name:test1] map [guid:b name:test2 id:90002] map [name:test3 id:90003 guid:c]]
[源] 的
response := httpClient.Do(request)
var data interface{}
rawdata, err := ioutil.ReadAll(response.body)
json.Unmarshal(rawdata, &data)
fmt.Println("data :", data)
答案 0 :(得分:1)
对于新的Go程序员来说,这是一个常见的错误。
由于语言设计的原因,json.Unmarshal
只能封送到exported字段。
只需将每个字段名称的首字母大写,即可将其导出。您可以选择添加字段标记来告诉json.Marshal要使用的键名。只有在您要使用json.Marshal
时才需要这样做。
type ResultStruct struct{
Id int `json:"id"`
Guid string `json:"guid"`
Name string `json:"name"`
}
要将JSON解组为结构,Unmarshal匹配传入的对象 Marshal使用的键的键(结构字段名称或其字符串) 标签),更喜欢完全匹配,但也接受不区分大小写 比赛。 Unmarshal只会设置结构的导出字段。
答案 1 :(得分:0)
您正在使用encoding/json
包解析数组,解组它。
type ResultStruct struct {
id int `json:"id"`
guid string `json:"guid"`
name string `json:"name"`
}
type Result struct {
Data []ResultStruct `json:"data"`
}
response := httpClient.Do(request)
var data Result
decErr := json.NewDecoder(response.body).Decode(&data)
fmt.Println(decErr, data)
这应该将数据解组到数组中。