gpt4 book ai didi

arrays - 如何解码 json 数组?

转载 作者:IT王子 更新时间:2023-10-29 01:55:49 24 4
gpt4 key购买 nike

解码 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 数据无效:对象键:值对后的无效字符“s”。第二行 "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

关于arrays - 如何解码 json 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22432011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com