在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
中。转型留作练习。
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » 如何在 Golang 中用匿名数组反序列化 json?
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » 如何在 Golang 中用匿名数组反序列化 json?