[英]How to Unmarshal the json array?
當我解組json數組時出了點問題。
我該如何糾正? 該代碼是: http : //play.golang.org/p/AtU9q8Hlye
package main
import (
"encoding/json"
"fmt"
)
type Server struct {
ServerName string
ServerIP string
}
type Serverslice struct {
Name string
Servers []Server
}
func main() {
var s []Serverslice
str := `{"name":"dxh","servers":[{"serverName":"VPN0","serverIP":"127.0.0.1"},{"serverName":"Beijing_VPN","serverIP":"127.0.0.2"}],
"name":"dxh1,"servers":[{"serverName":"VPN1","serverIP":"127.0.0.1"},{"serverName":"Beijing_VPN","serverIP":"127.0.0.2"}]}`
json.Unmarshal([]byte(str), &s) //the wrong line.....................
fmt.Println(len(s))
}
首先,您將忽略json.Unmarshal
的錯誤返回值。 您可能想要類似:
if err := json.Unmarshal([]byte(str), &s); err != nil {
log.Fatalln(err)
}
進行此更改后,我們可以看到您的JSON數據無效: invalid character 's' after object key:value pair
。 在第二行"dxh1
的末尾缺少引號。
修復該錯誤並重新運行程序,您將收到另一個錯誤: json: cannot unmarshal object into Go value of type []main.Serverslice
。 這里有兩個可能的問題:
您打算解碼成一個對象。 在這種情況下,只需將s
聲明為Serverslice
。 這是可以進行更改的程序版本: http : //play.golang.org/p/zgyr_vnn-_
您的JSON應該是一個數組(可能,因為它似乎有重復的鍵)。 這是JSON更改為提供數組的更新版本: http : //play.golang.org/p/Wl6kUaivEm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.