How use object of []struct in golang

huangapple go评论92阅读模式
英文:

How use object of []struct in golang

问题

我定义了一个结构体,如下所示:

type json-input []struct {
    Data string `json:"data"`
}

可以使用以下方式解析 JSON 字符串:

data := &json-input{}
_ = json.Unmarshal([]byte(resp.Data), data)

要使用该结构体的对象来获取数据,可以通过索引访问每个元素的 Data 字段。例如:

firstData := (*data)[0].Data
secondData := (*data)[1].Data

这样就可以获取到第一个和第二个元素的 Data 数据。

英文:

I defined struct like:

type json-input []struct {
	Data	string	`json:"data"`
}

that Unmarshal json string like

> [{"data":"some data"}, {"data":"some data"}]

data := &json-input{}
_ = json.Unmarshal([]byte(resp.Data), data)

How i can use object of this struct for turn of data

答案1

得分: 10

你不能在类型声明中使用连字符,并且你可能想要将其解组为resp而不是resp.Data;也就是说,你可能想要做类似以下的操作:

import (
	"encoding/json"
	"fmt"
)

type jsoninput []struct {
	Data string `json:"data"`
}

func main() {
	resp := `[{"data":"some data"}, {"data":"some more data"}]`
	data := &jsoninput{}
	_ = json.Unmarshal([]byte(resp), data)
	for _, value := range *data {
		fmt.Println(value.Data)  // 输出 "some data" 和 "some more data"
	}
}

链接:https://play.golang.org/p/giDsPzgHT_

英文:

You can't use hyphens in type declarations, and you probably want to unmarshal to resp instead of resp.Data; that is, you may want to do something like

import (
	"encoding/json"
	"fmt"
)

type jsoninput []struct {
	Data string `json:"data"`
}

func main() {
	resp := `[{"data":"some data"}, {"data":"some more data"}]`
	data := &jsoninput{}
	_ = json.Unmarshal([]byte(resp), data)
	for _, value := range *data {
		fmt.Println(value.Data)  // Prints "some data" and "some more data"
	}
}

https://play.golang.org/p/giDsPzgHT_

huangapple
  • 本文由 发表于 2017年9月10日 15:45:14
  • 转载请务必保留本文链接:https://go.coder-hub.com/46138439.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定