gpt4 book ai didi

api - 如何发现 []byte 是数组还是单个对象

转载 作者:行者123 更新时间:2023-12-01 22:42:30 25 4
gpt4 key购买 nike

我正在创建一个 API,它将接收特定路由中的对象。在这条 route ,我可以接收单个对象或大部分对象。

例子:

  [{"foo":"bar"}]
{"foo":"bar"}

在 de json.Unmarshal 之前如何知道正文请求是 slice 还是单个对象.此外,如果这不可能,那么接受这两种类型的正文请求并将它们转换为对象列表的最佳方法是什么?

我期待这样的事情:
  type Foo struct {
Foo string `json:"foo"`
}

func Bla() []Foo {

fakeBody := []byte(`[{"foo":"bar"}]`)
fakeBody2 := []byte(`{"foo":"bar"}`)

var foo []Foo

// If fakeBody contains a array of objects
// then parse it to the foo slice variable normally

// So, if the fakeBody2 is a single object then
// parse this single object to the foo slice that will contain only
// one element.

return foo
}

最佳答案

这就是我在这种情况下会考虑做的事情,按以下顺序:

  • 您可以阅读正文,并检查第一个非空格字符以查看它是“[”还是“{”,并据此解码。
  • 您可以首先解码为数组,然后如果失败,则作为单个对象。
  • 您可以解码到 interface{},进行类型断言,并自己解析内容。
  • 关于api - 如何发现 []byte 是数组还是单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58511754/

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