Heim > Backend-Entwicklung > Golang > Unmarshalling von JSON innerhalb von JSON in Go

Unmarshalling von JSON innerhalb von JSON in Go

王林
Freigeben: 2024-02-09 14:48:09
nach vorne
1216 Leute haben es durchsucht

在 Go 中解组 JSON 中的 JSON

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

问题内容

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

示例:

输入:

{
  "foo":1,
  "bar":"{\\"a\\":\\"hello\\"}"
}
Nach dem Login kopieren

转到类型:

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

type Main struct {
    Foo int   `json:"foo"`
    Bar Child `json:"bar"`
}
Nach dem Login kopieren

我想我需要在其中一种类型上实现自定义 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))
}
Nach dem Login kopieren

在操场上查看

Das obige ist der detaillierte Inhalt vonUnmarshalling von JSON innerhalb von JSON in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage