gpt4 book ai didi

json - 在 golang 中,json.Unmarshal() 在 Playground /复制粘贴的 JSON 中有效,但在实际代码中无效

转载 作者:行者123 更新时间:2023-12-01 22:37:28 34 4
gpt4 key购买 nike

我正在用 Golang 编写一个程序,它与 barefoot 的修改版本交互。通过 netcat 以 json 格式返回结果的 mapmatching 库。

我在我的实际代码中 json.Unmarshal只会解析对结构的 nil 值的响应。但是如果将 json 打印到控制台(参见下面的代码片段)和 copy paste into goplayground它的行为符合预期。

我想知道这是否是我从控制台复制粘贴时绕过的编码问题。

如何让我的代码处理从赤脚接收到的字符串与从控制台复制粘贴时相同的字符串?

这是相关的代码片段(结构与 goplayground 相同)

body := io_func(conn, cmd)
var obvs []Json_out
json.Unmarshal([]byte(body), &obvs)
fmt.Println(body)
fmt.Println(obvs)

io_func()如果相关(响应是两行,第一行是消息,第二行是 json 字符串)
func io_func(conn net.Conn, cmd string) string {
fmt.Fprintf(conn, cmd+"\n")
r := bufio.NewReader(conn)
header, _ := r.ReadString('\n')
if header == "SUCCESS\n" {
resp, _ := r.ReadString('\n')
return resp
} else {
return ""
}

}

最佳答案

按照 Cerise Limón 的建议正确处理错误消息,我确定了 osm_id JSON 中的值被 json.Unmarshall 解析从 io_func() 获取字符串时作为数字,尽管在操场示例中手动传入字符串时并没有这样做。虽然我不明白为什么会这样,但我会通过适当的错误处理来解决它。

我更改了赤脚代码以返回 osm_id明确地用引号括起来,因为虽然只由数字组成,但我只将它用作字符串。它现在按预期工作。同样,我可以更改结构中的类型并根据需要在 Go 中进行转换。

关于json - 在 golang 中,json.Unmarshal() 在 Playground /复制粘贴的 JSON 中有效,但在实际代码中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58617697/

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