【问题标题】:In Go, how to unmarshal a string containing an array of a struct在 Go 中,如何解组包含结构数组的字符串
【发布时间】:2020-09-24 02:35:28
【问题描述】:

我从 API 接收的属性之一是包含结构数组的字符串,其中结构的属性被转义。

我希望数据(输出对象)是一个简单的 MyStruct 数组,如下所示:

[{"f":"f-val"}]

但是,我得到的输出是一个空数组 []。

有人可以帮忙吗?我将不胜感激。

package main

import "fmt"
import "encoding/json"

type MyStruct struct {
    F string
}

func main() {
    stringResponse := `"[{\"f\":\"f-val\"}]"`
    var data []MyStruct
    json.Unmarshal([]byte(string(stringResponse)), &data)
    fmt.Print(data)
}

【问题讨论】:

标签: arrays json go struct unmarshalling


【解决方案1】:

下面是正确的例子:

package main

import (
   "encoding/json"
   "strconv"
)

func main() {
   s, e := strconv.Unquote(`"[{\"f\":\"f-val\"}]"`)
   if e != nil {
      panic(e)
   }
   var (
      b = []byte(s)
      m []struct{F string}
   )
   json.Unmarshal(b, &m)
   println(m[0].F == "f-val")
}

【讨论】:

  • 你可能是对的,但这就是我在 API 响应中得到的{\"f\":\"f-val\"}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 2018-12-24
相关资源
最近更新 更多