gpt4 book ai didi

json - 使用 strip 库在 Go 中解码数据

转载 作者:IT王子 更新时间:2023-10-29 02:03:37 26 4
gpt4 key购买 nike

刚开始使用 Go 进行黑客攻击。

我正在尝试使用 Stripe 库。有一种 Charge 类型,我正在尝试使用他们的自定义 UnmarshalJSON 调用,但我传递的参数似乎都不起作用。这是怎么回事?

var charge, err = sc.Charges.Get(id, nil)

if err != nil {
log.Fatal(err)
}

thing := charge.UnmarshalJSON([]byte(charge))

函数如下:https://github.com/stripe/stripe-go/blob/master/charge.go#L162

我收到:./hello.go:48: 无法将电荷(类型 *stripe.Charge)转换为类型 []byte

还没有找到满足这个函数的传递参数。任何帮助表示感谢。

最佳答案

JSON 收费

Charge.UnmarshalJSON() 需要一个字节 slice ([]byte)。 Charge 是一种结构类型,您不能将它的值(也不是指向它的指针)转换为 []byte。这就是错误消息告诉您的内容。

UnmarshalJSON() 方法预期的字节 slice 是一个描述 Charge 的 JSON 文本,或者查看 UnmarshalJSON()< 的实现,它还接受一个 JSON 文本作为 Charge ID。

所以这应该可行:

var charge, err = sc.Charges.Get(id, nil)

if err != nil {
log.Fatal(err)
}

err := charge.UnmarshalJSON([]byte(`"123"`))

或者用 JSON 表示的 Charge 结构(不完整):

var charge, err = sc.Charges.Get(id, nil)

if err != nil {
log.Fatal(err)
}

s := `{"id":"123","amount":2000,"description":"testing"}`
err := charge.UnmarshalJSON([]byte(s))

fmt.Printf("%+v", thing)

输出应包含从 JSON 文本正确设置的这些字段,以及其他具有零值的字段:

{Amount:2000 Desc:testing ID:123}

Charge转JSON

要打印 Charge 值的格式良好的 JSON 表示,请使用 json.Marshal() :

out, err := json.Marshal(c)
if err != nil {
panic(err) // handle error
}
fmt.Println(string(out))

或者使用json.MarshalIndent() :

out, err := json.MarshalIndent(c, "", "  ")
if err != nil {
panic(err) // handle error
}
fmt.Println(string(out))

示例输出(剥离):

{
"amount": 2000,
"description": "testing",
"id": "123",
}

关于json - 使用 strip 库在 Go 中解码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787301/

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