簡単な質問: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)
}
Unmarshal
の- 戻り値 はエラーであり、これが出力されます。
// 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]
プレイのコード: https://play.golang.org/p/GNWlylavam
注:この回答は、質問が編集される前に書かれました。 元の質問 _&arr
_でjson.Unmarshal()
に渡されました:
_unmarshaled := json.Unmarshal([]byte(dataJson), &arr)
_
arr
のアドレスを json.Unmarshal()
に渡してJSON配列を非整列化しますが、arr
は配列(またはスライス)ではありません。構造体の値。
配列は、Go配列またはスライスに非整列化できます。したがって、_arr.Array
_を渡します。
_dataJson := `["1","2","3"]`
arr := JsonType{}
err := json.Unmarshal([]byte(dataJson), &arr.Array)
log.Printf("Unmarshaled: %v, error: %v", arr.Array, err)
_
出力( Go Playground で試してください):
_2009/11/10 23:00:00 Unmarshaled: [1 2 3], error: <nil>
_
もちろん、JsonType
ラッパーさえ必要ではなく、単純な_[]string
_スライスを使用するだけです:
_dataJson := `["1","2","3"]`
var s []string
err := json.Unmarshal([]byte(dataJson), &s)
_