简单的问题:如何使用json包解析Go中的字符串(这是一个数组)?
type JsonType struct{
Array []string
}
func main(){
dataJson = `["1","2","3"]`
arr := JsonType{}
unmarshaled := json.Unmarshal([]byte(dataJson), &arr.Array)
log.Printf("Unmarshaled: %v", unmarshaled)
}
答案 0 :(得分:18)
Unmarshal
的{{3}}是错误的,这就是您要打印的内容:
// Return value type of Unmarshal is error.
err := json.Unmarshal([]byte(dataJson), &arr)
您也可以摆脱JsonType
并使用切片:
package main
import (
"encoding/json"
"log"
)
func main() {
dataJson := `["1","2","3"]`
var arr []string
_ = json.Unmarshal([]byte(dataJson), &arr)
log.Printf("Unmarshaled: %v", arr)
}
// prints out:
// 2009/11/10 23:00:00 Unmarshaled: [1 2 3]
游戏代码:return value
答案 1 :(得分:4)
注意:此答案是在编辑问题之前编写的。在original question #include <curl\curl.h>
传递给&arr
:
json.Unmarshal()
您将unmarshaled := json.Unmarshal([]byte(dataJson), &arr)
的地址传递给json.Unmarshal()
以解组JSON数组,但arr
不是数组(或切片),它是结构值。
可以将数组解组为Go数组或切片。所以通过arr
:
arr.Array
输出(在Go Playground上尝试):
dataJson := `["1","2","3"]`
arr := JsonType{}
err := json.Unmarshal([]byte(dataJson), &arr.Array)
log.Printf("Unmarshaled: %v, error: %v", arr.Array, err)
当然,您甚至不需要2009/11/10 23:00:00 Unmarshaled: [1 2 3], error: <nil>
包装,只需使用简单的JsonType
切片:
[]string