如何解组json数组?

user3373877:

当我解组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))
}
詹姆斯·亨斯特里奇(James Henstridge):

首先,您忽略的错误返回值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. 您打算解码成一个对象。在这种情况下,只需声明sServerslice这是可以进行更改的程序版本:http : //play.golang.org/p/zgyr_vnn-_

  2. 您的JSON应该是一个数组(可能,因为它似乎有重复的键)。这是JSON更改为提供数组的更新版本:http : //play.golang.org/p/Wl6kUaivEm

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章