簡體   English   中英

如何解組json數組?

[英]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 這里有兩個可能的問題:

  1. 您打算解碼成一個對象。 在這種情況下,只需將s聲明為Serverslice 這是可以進行更改的程序版本: http : //play.golang.org/p/zgyr_vnn-_

  2. 您的JSON應該是一個數組(可能,因為它似乎有重復的鍵)。 這是JSON更改為提供數組的更新版本: http : //play.golang.org/p/Wl6kUaivEm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM