Go의 JSON 내에서 JSON 역마샬링

王林
풀어 주다: 2024-02-09 14:48:09
앞으로
1189명이 탐색했습니다.

在 Go 中解组 JSON 中的 JSON

php小编西瓜将为您介绍在Go语言中解析JSON的方法。在开发过程中,处理JSON数据是一项常见的任务。Go语言提供了强大而简单的方式来解组JSON数据,并将其映射到Go语言的结构体中。通过使用标准库中的json包,您可以轻松地将JSON数据解析为Go语言中的具体类型,并且可以根据需要进行进一步的操作和处理。在本文中,我们将会分享一些关于在Go语言中解组JSON的技巧和技术,帮助您更好地理解和应用这一功能。

问题内容

我想将一个 json 对象(其中一个字段包含 json 字符串)解组为一个连贯的对象。我如何在 go 中做到这一点?

示例:

输入:

{
  "foo":1,
  "bar":"{\\"a\\":\\"hello\\"}"
}
로그인 후 복사

转到类型:

type Child struct {
    A string `json:"a"`
}

type Main struct {
    Foo int   `json:"foo"`
    Bar Child `json:"bar"`
}
로그인 후 복사

我想我需要在其中一种类型上实现自定义 unmarshaljson 实现,但它让我绞尽脑汁来弄清楚是哪个类型以及如何实现。

解决方法

我猜您想将其视为 json 字符串只是周围 json 对象的一部分?如果是这样,那么是的,正如您所建议的, child 上的自定义 unmarshaljson 方法应该可以完成此操作。

func (c *Child) UnmarshalJSON(p []byte) error {
    var jsonString string
    if err := json.Unmarshal(p, &jsonString); err != nil {
        return err // Means the string was invalid
    }
    type C Child // A new type that doesn't have UnmarshalJSON method
    return json.Unmarshal([]byte(jsonString), (*C)(c))
}
로그인 후 복사

在操场上查看

위 내용은 Go의 JSON 내에서 JSON 역마샬링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿