将字符串转换为数组

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

Cast String to Array

问题

我正在尝试将一个类似于

[{"a":"b"}, {"a":"d"}]

的字符串转换为数组/切片。
有没有办法将字符串转换为数组?

解决方案:
我的目标是从提供的 JSON 中获得一个结构体数组。但是在我的代码中,我做错了一些事情,导致了这个问题。找到了解决方法。

英文:

I am trying to convert a string which is like

[{"a":"b"}, {"a":"d"}]

to a Array/slice.
Is there any way to cast string to a Array?

Solution:
My goal was to have a array of struct from provided json. But in my code i was doing something wrong, which result into this. Got the solution.

答案1

得分: 2

由于您的示例是JSON格式的,您可以轻松地进行输入转换:

const input = `[{"a":"b"}, {"a":"d"}]`

type arrayValue struct {
	A string `json:"a"`
}

func main() {
    // 将JSON解析为[]arrayValue
	var arr []arrayValue
	if err := json.Unmarshal([]byte(input), &arr); err != nil {
		panic(err)
	}

    // 将[]arrayValue转换为[]string
	var strArr = make([]string, len(arr))
	for i, val := range arr {
		strArr[i] = val.A
	}
	fmt.Println(strArr) // [b d]
}

试一试:https://play.golang.org/p/KMsx1OaisGl

英文:

Since your example is JSON, you can easily convert the input:

const input = `[{"a":"b"}, {"a":"d"}]`

type arrayValue struct {
	A string `json:"a"`
}

func main() {
    // parse JSON to []arrayValue
	var arr []arrayValue
	if err := json.Unmarshal([]byte(input), &arr); err != nil {
		panic(err)
	}

    // convert []arrayValue to []string
	var strArr = make ([]string, len(arr))
	for i, val := range arr {
		strArr[i] = val.A
	}
	fmt.Println(strArr) // [b d]
}

Try it: https://play.golang.org/p/KMsx1OaisGl

huangapple
  • 本文由 发表于 2021年6月5日 00:03:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/67840484.html
匿名

发表评论

匿名网友

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

确定