如何根据Golang中的对象类型解码JSON



如果您有以下JSON结构:

[
  {
    "type": "home",
    "name": "house #1",
    ... some number of properties for home #1
  },
  {
    "type": "bike",
    "name": "trek bike #1",
    ... some number of properties for bike #1
  },
  {
    "type": "home",
    "name": "house #2",
    ... some number of properties for home #2
  }
]

如何在golang中将其解码为结构,而不知道每种类型是什么,直到您将对象分解为止。似乎您必须两次进行此操作。

也可以从我可以看出的情况下,我可能应该使用RawMessage延迟解码。但是我不确定这会如何。

说我有以下结构:

type HomeType struct {
  Name                  string       `json:"name,omitempty"`
  Description           string       `json:"description,omitempty"`
  Bathrooms             string       `json:"bathrooms,omitempty"`
  ... more properties that are unique to a home
}
type BikeType struct {
  Name                  string       `json:"name,omitempty"`
  Description           string       `json:"description,omitempty"`
  Tires                 string       `json:"tires,omitempty"`
  ... more properties that are unique to a bike
}

第二个问题。可以在流模式下执行此操作吗?因为当这个数组真的很大时?

谢谢

如果要操纵对象,则必须知道它们是什么类型。但是,如果您只想将它们传递给:例如:如果您从db获得一些大对象,只是将其传递给客户端,您可以使用空的interface{}类型:

type HomeType struct {
  Name                  interface{}        `json:"name,omitempty"`
  Description           interface{}        `json:"description,omitempty"`
  Bathrooms             interface{}        `json:"bathrooms,omitempty"`
  ... more properties that are unique to a home
}
type BikeType struct {
  Name                  interface{}        `json:"name,omitempty"`
  Description           interface{}        `json:"description,omitempty"`
  Tires                 interface{}        `json:"tires,omitempty"`
  ... more properties that are unique to a bike
}

在此处阅读有关空接口的更多信息-Link

希望这就是您的想法

相关内容

  • 没有找到相关文章

最新更新