我正在尝试解析类型为
的JSON"{\"ids\":[\"a\",\"b\"]}"
这是我的代码:
package main
import "fmt"
import "encoding/json"
import "strings"
type Idlist struct {
id []string `json:"ids"`
}
func main() {
var val []byte = []byte(`"{\"ids\":[\"a\",\"b\"]}"`)
jsonBody, _ := strconv.Unquote(string(val))
var holder Idlist
if err := json.NewDecoder(strings.NewReader(jsonBody)).Decode(&holder); err!= nil{
fmt.Print(err)
}
fmt.Print(holder)
fmt.Print(holder.id)
}
然而,我一直在获得输出
{[]}[]
我无法获取结构中的数据。 我哪里错了?这是游乐场链接:https://play.golang.org/p/82BaUlfrua
答案 0 :(得分:1)
您的结构必须如下所示:
type Idlist struct {
Id []string `json:"ids"`
}
Golang认为以大写字母开头的字段是公开的。因此,您的字段对json解码器不可见。有关详细信息,请查看此帖子: Why Golang cannot generate json from struct with front lowercase character?
答案 1 :(得分:0)
以下是您解决问题的示例:http://play.golang.org/p/id4f4r9tEr
您可能需要在字符串上使用strconv.Unquote
。
这可能是重复的:How to unmarshal an escaped JSON string in Go?
已解决:https://play.golang.org/p/hAShmfDUA_
type Idlist struct {
Id []string `json:"ids"`
}