gpt4 book ai didi

由于字符无效,Json 解码失败

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

我很难在 golang 中解码 json 内容。我的对象中的一个字段包含 xml 内容,有时它会失败,并声明如下消息:invalid character '\x..' in string literal

我知道这是由于我的 xml 中的控制字符造成的,但不知道如何处理它。我将文档存储在 mongoosejs 中并将 xml 字段保存为 String 类型我试图反序列化的结构是这样声明的:

type A struct {
Xml []byte `json:"xml"`
}

解码是通过以下方式完成的:

var xml A
err := json.Unmarshal(content, &xml)

最佳答案

由于JSON不能包含任何控制字符,我找到了最方便的解决方案,将xml数据简单地转换为base64,例如:

// before sending in javascript
a.xml = new Buffer(a.xml).toString('base64')

然后,在golang方面:

// Declare a new type for custom unmarshaling
type XmlB64 []byte
func (b *XmlB64) UnmarshalJSON(data []byte) error {
if b == nil {
return fmt.Errorf("UnmarshalJSON on nil pointer")
}

if len(data) == 0 {
return nil
}

if x, err := base64.StdEncoding.DecodeString(string(data)); err != nil {
return err
} else {
*b = x
}

return nil
}

之后,无需在代码中执行任何特殊操作即可完成 Unmarshalling base64 内容。我们首先改变我们的结构:

type A struct {
Xml XmlB64 `json:"xml"`
}

解码:

var xml A
err := json.Unmarshal(content, &xml)

关于由于字符无效,Json 解码失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294556/

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