首页 >后端开发 >Golang >golang:也有方法的 json 数组

golang:也有方法的 json 数组

WBOY
WBOY转载
2024-02-09 10:15:181264浏览

golang:也有方法的 json 数组

php小编柚子为您带来了一篇关于Golang的文章,主题是“golang:也有方法的 json 数组”。Golang是一门简洁高效的编程语言,而json数组则是常用的数据格式之一。本文将探讨如何在Golang中对json数组进行操作,并介绍了一些有用的方法。无论您是初学者还是有一定经验的开发者,本文都能为您提供一些有价值的信息和技巧。让我们一起来了解一下吧!

问题内容

我有一个这样的数据结构:

type (
  parent struct {
    items []*child
  }
  child struct {
    field string `json:"field"`
  }
)

我也希望 parent 有方法:

func (p *parent) example() { }

但是 json 要求是父级只是一个数组:

[
  {
    "field": "data"
  }
]

我希望 parent 是一个简单的数组,但为了让 parent 是一个简单的数组,但为了让

有方法,它不能是数组类型。

有没有办法用一种数据结构解决这两个问题?

greatgrandparent包含[]grandparent,而grandparent有一个包含parentparent(让事情变得更复杂,我必须使用的实际数据结构有两个级别:greatgrandparent包含[]grandparent,而grandparent有一个包含

。json结构是外部定义的,数组没有键名称,我想要四个结构中的每一个都有方法。)

解决方法

为了让父级有方法,它不能是数组类型。 它可以,它只是必须有一个

名称

,因为只有命名类型(或指向命名类型的指针)可以实现方法。以下是有效的 go 代码:

type parent []*child

func (p parent) example() { /* ... */ }
parent注意,上面的

是一个切片而不是一个数组。 go 中的数组具有静态长度,你不能增加它们,也不能缩小它们,另一方面,切片具有动态长度,你可以随意调整它们的大小。数组和切片密切相关,但并不相同。

json.unmarshaler/json.marshaler

另一种方法是让结构类型实现

接口:

type parent struct { Items []*child }

func (p *parent) UnmarshalJSON(data []byte) error {
    return json.Unmarshal(data, &p.Items)
}

func (p parent) MarshalJSON() ([]byte, error) {
    return json.Marshal(p.Items)
}
🎜上面将生成所需的 json 结构。🎜

以上是golang:也有方法的 json 数组的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除