我在 golang 中遇到了編組 JSON 的問題。
我需要解組從 UDP 資料包中收到的 json 物件。但是我遇到了解組問題 - 它不想正確解組。
我收到“解組錯誤:json:無法將字串解組為 main.MyMap 型別的 Go 值”錯誤。我以不同的方式進行了測驗,但是在這個示例中感到卡住了 - marshaland unmarshal 在一行中,仍然出現錯誤。
package main
import (
"encoding/json"
"fmt"
"log"
)
type MyMap struct {
Param map[string]string `json:"packet"`
}
func main() {
rawJson := []byte(`{
"packet":{
"hostname":"host1",
"pid":"123435",
"processname":"process",
"type":"partial"}
}`)
data, err := json.Marshal(rawJson)
if err != nil {
log.Println("Error with marchal JSON: " err.Error())
}
var unmarshaled MyMap
err = json.Unmarshal(data, &unmarshaled)
if err != nil {
fmt.Printf("Error with unmarshaling: %v", err)
return
}
fmt.Printf("Read a message from %v %s \n", unmarshaled.Param["pid"], unmarshaled.Param["processname"])
}
如果我試圖解組從 UDP 收到的 JSON,錯誤會顯示
invalid character 'i/x01' looking for beginning of value
我相信我會因為我對元帥系統的誤解而犯這種錯誤。如果您能幫助我,我將不勝感激 謝謝!
uj5u.com熱心網友回復:
您應該更改rawjson為字串型別并更改您的訂單代碼,如下所示:
package main
import (
"encoding/json"
"fmt"
)
type MyMap struct {
Param map[string]string `json:"packet"`
}
func main() {
rawJson := `{
"packet":{
"hostname":"host1",
"pid":"123435",
"processname":"process",
"type":"partial"}
}`
struct_instance := MyMap{}
if er := json.Unmarshal([]byte(rawJson), &struct_instance); er != nil {
fmt.Println(er)
}
fmt.Println(struct_instance)
json_as_byte, er := json.Marshal(struct_instance)
if er != nil {
fmt.Println(er)
}
fmt.Println(string(json_as_byte))
}
uj5u.com熱心網友回復:
我對你的代碼做了很少的改動,而且效果很好。
你可以在這里運行它:https : //go.dev/play/p/jvw9MsVFbHt
type mp map[string]string
type MyMap struct {
Param mp `json:"packet"`
}
func main() {
rawJson := []byte(`{
"packet":{
"hostname":"host1",
"pid":"123435",
"processname":"process",
"type":"partial"}
}`)
data, err := json.Marshal(rawJson) //Not Required
if err != nil {
fmt.Println("Error with marchal JSON: " err.Error())
}
fmt.Println("data ", data)
var res MyMap
json.Unmarshal(rawJson, &res)
fmt.Printf("Read a message from %v %s \n", res.Param["pid"], res.Param["processname"])
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/375986.html
上一篇:Zap全域記錄器
