インターフェイス型のデータを非整列化しようとしています。そのため、インターフェイスタイプを[] byteに変換し、アンマーシャルに渡す必要があります。私は試した
err := json.Unmarshal([]byte(kpi), &a)
=>失敗kpidata, res := kpi.([]byte)
=> failedを使用してインターフェイスをバイトに変換するのにうんざりしました。kpidataはnilです変換できる方法はありますか?
sample code data
はJSON-encoded(単純なWordString)したがって、Unmarshal
を間違った方法で使用しています。
_// Unmarshal parses the JSON-encoded data and stores the result // in the value pointed to by v. If v is nil or not a pointer, // Unmarshal returns an InvalidUnmarshalError. func Unmarshal(data []byte, v interface{}) error
_
Go Playground および this:_[]string{"art", "football"}
_ で試してください:
_package main
import (
"encoding/json"
"fmt"
)
func main() {
// ********************* Marshal *********************
u := map[string]interface{}{}
u["name"] = "kish"
u["age"] = 28
u["work"] = "engine"
//u["hobbies"] = []string{"art", "football"}
u["hobbies"] = "art"
b, err := json.Marshal(u)
if err != nil {
panic(err)
}
fmt.Println(string(b))
// ********************* Unmarshal *********************
var a interface{}
err = json.Unmarshal(b, &a)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(a)
}
_
出力:
_{"age":28,"hobbies":"art","name":"kish","work":"engine"}
map[name:kish work:engine age:28 hobbies:art]
_
あなたはUnmarshalそれをしたいので、試してください this 簡単な作業例([]byte(kpi.(string)
):
_package main
import (
"encoding/json"
"fmt"
)
func main() {
var kpi interface{} = st
var a []Animal
err := json.Unmarshal([]byte(kpi.(string)), &a)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(a)
}
type Animal struct {
Name string
Order string
}
var st = `[
{"Name": "Platypus", "Order": "Monotremata"},
{"Name": "Quoll", "Order": "Dasyuromorphia"}
]`
_
出力:
_[{Platypus Monotremata} {Quoll Dasyuromorphia}]
_
動作中 例 ([]byte(*kpi.(*string))
)を使用:
_package main
import (
"encoding/json"
"fmt"
)
func main() {
var kpi interface{} = &st
var a []Animal
err := json.Unmarshal([]byte(*kpi.(*string)), &a)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(a)
}
type Animal struct {
Name string
Order string
}
var st = `[
{"Name": "Platypus", "Order": "Monotremata"},
{"Name": "Quoll", "Order": "Dasyuromorphia"}
]`
_
元s :
_package main
import (
"encoding/json"
"fmt"
)
func main() {
u := map[string]interface{}{}
u["1"] = "one"
b, err := json.Marshal(u)
if err != nil {
panic(err)
}
fmt.Println(string(b))
}
_
出力:
_{"1":"one"}
_
これがお役に立てば幸いです。