在Golang中,如何使用匿名数组来反序列化json数据呢?这是许多开发者常常遇到的问题。匿名数组可以方便地处理一些简单的数据结构,而无需定义具体的结构体。通过使用Golang的内置json包,我们可以轻松地实现这个功能。下面,php小编新一将为您详细介绍如何在Golang中使用匿名数组来反序列化json数据的方法。让我们一起来看看吧!
问题内容
我从外部服务器接收此 json:
[["010117"、"070117"、"080117"]、["080117"、"140117"、"150117"]、["150117"、"210117"、"220117"]]
我需要解析它
package main
import (
"encoding/json"
"fmt"
"io"
"os"
"runtime"
)
type Range struct {
From string
To string
Do string
}
type AllRanges struct {
Ranges []Range
}
func main() {
var ranges AllRanges
j, err := os.ReadFile(file)
if err != nil {
panic("Can't read json file")
}
if json.Unmarshal(j, &v) != nil {
panic("Error reading the json")
}
}
当我执行时,会抛出一个恐慌,表明读取 json 时出错
提前致谢!
解决方法
这不是失败的代码。您发布的代码将无法编译,因为它试图解组为未声明的变量
v
。假设
v
应该是ranges
,问题就很简单了....
ranges
的类型为 allranges
,它是一个具有命名成员的结构体,ranges
是一个结构体数组,也具有命名成员。
因此,当尝试将 json 解组到此结构中时,解组器将期望找到:
{
"ranges": [
{
"from": "..",
"to": ..,
"do": ".."
},
{ etc }
]
}
要解组由字符串数组组成的匿名数组的数据,您需要将 ranges
声明为字符串数组数组:
var ranges [][]string
...
if json.Unmarshal(j, &ranges) != nil {
panic("Error reading the json")
}
一旦解组到这个数组数组中,您就需要编写代码将其转换为所需的结构化值。
这个playground演示了如何成功将示例数据解组到 [][]string
中。转型留作练习。
以上就是如何在 Golang 中用匿名数组反序列化 json?的详细内容,更多请关注编程网其它相关文章!