如何将转义 json 转换为结构

How to convert escaped json into a struct

我在将转义的 json 对象转换为结构时遇到问题。

我面临的主要问题是源字段的转义 json。 以下数据是如何保存的。

{
  "key": "123",
  "sources": "{\"1a\":\"source1a\",\"2b\":\"source2b\",\"3c\":\"source3c\",\"default\":\"sourcex\"}"
}
type config struct {
  Key     string `json:"key" validate:"required"`
  Sources ???? `json:"sources" validate:"required"`
}

然后我将有一个源值,并想检查我的值是否在 json 中找到。 如果我的值为“1a”return“source1a”等

我也在尝试在单元测试中编写它。

有些人可能会使用自定义解组方法,但我认为只进行两遍更容易:

package main

import (
   "encoding/json"
   "fmt"
)

const s = `
{
   "key": "123",
   "sources": "{\"1a\":\"source1a\",\"2b\":\"source2b\",\"3c\":\"source3c\",\"default\":\"sourcex\"}"
}
`

func main() {
   var t struct{Key, Sources string}
   json.Unmarshal([]byte(s), &t)
   m := make(map[string]string)
   json.Unmarshal([]byte(t.Sources), &m)
   fmt.Println(m) // map[1a:source1a 2b:source2b 3c:source3c default:sourcex]
}