Parse key containing unicode characters in JSON with Go

huangapple go评论73阅读模式
英文:

Parse key containing unicode characters in JSON with Go

问题

你好!以下是翻译好的内容:

我有一个像这样的 API 响应:

{ 
  "Pass ✔": true
}

在 Go 语言中,我使用了以下代码:

type Status struct {
  Pass bool `json:"Pass ✔"`
}

// ...

var s Status

json.Unmarshal(body, &s)

fmt.Println(s.Pass) // false,但应该是 true

我应该如何正确地解析这个 JSON 文档?

英文:

I have an API response like this:

{ 
  "Pass ✔": true
}

In Go I use this code:

type Status struct {
  Pass bool `json:"Pass ✔"`
}

// ...

var s Status

json.Unmarshal(body, &s)

fmt.Println(s.Pass) // false, where it should be true

How can I correctly unmarshal this JSON document?

答案1

得分: 1

如其他人所提到的,目前还不能做到这一点。作为一种解决方法,你可以尝试以下代码:

package main

import (
   "encoding/json"
   "fmt"
)

type status map[string]bool

func (s status) pass() bool {
   return s["Pass ✔"]
}

func main() {
   data := []byte(`{"Pass ✔": true}`)
   var stat status
   json.Unmarshal(data, &stat)
   pass := stat.pass()
   fmt.Println(pass) // true
}
英文:

As others mentioned, it's not currently possible to do that. As a workaround, you could do something like this:

package main

import (
   "encoding/json"
   "fmt"
)

type status map[string]bool

func (s status) pass() bool {
   return s["Pass ✔"]
}

func main() {
   data := []byte(`{"Pass ✔": true}`)
   var stat status
   json.Unmarshal(data, &stat)
   pass := stat.pass()
   fmt.Println(pass) // true
}

huangapple
  • 本文由 发表于 2021年10月21日 12:15:15
  • 转载请务必保留本文链接:https://go.coder-hub.com/69655810.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定