gpt4 book ai didi

转到 "unexpected end of JSON input"错误

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:50 28 4
gpt4 key购买 nike

我知道这个问题已被问过几次,但我没有看到符合我支持 NULL 值的需求的问题。我有数据库中可选的字段。我需要以 JSON 格式输出数据,其中包括这些可能为 NULL 的字段,如果它们仍然为 NULL,我想从 JSON 中忽略这些字段。我可以更改为 NULL 以外的其他默认值,但我还没有找到一个有效的值。我在 MariaDB 中以 JSON 格式(长文本)存储 JSON 数组。这是我失败的代码(Playground link):

package main

import (
"encoding/json"
"fmt"
)

var respBytes = []byte("")
// Example data [12345, 23456, 34567]

func main() {
var jsonData []interface{}
err := json.Unmarshal(respBytes, &jsonData)
if err != nil {
fmt.Println(err)
}
fmt.Println(jsonData)
}

用示例数据替换 respBytes 空字符串并且它有效。示例数据是简单的 JSON 数字数组,例如:“[12345, 23456, 34567]”。我怎样才能让它在有数据的情况下工作?

最佳答案

How can I get it to work with data and without?

不幸的是,您不能使用标准库 json 包。它在解码之前(同时)验证 JSON 输入,空字符串不是有效的 JSON,因此它会在您有机会使用自定义解码器解码之前出错。

在这种特殊情况下,唯一真正的选择是首先检查有效输入。当然,如果你愿意,你可以使用包装函数来做到这一点:

func myUnmarshal(input []byte, target interface{}) error {
if len(input) == 0 {
return nil
}
return json.Unmarshal(input, target)
}

关于转到 "unexpected end of JSON input"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48632988/

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