没有Keys的JSON字符串数组到GoLang结构中

时间:2017-04-29 20:04:15

标签: json go

我正在尝试将从POST请求提交的JSON解析为Web服务中的结构以发送电子邮件。在请求正文中提交了以下JSON。

{
  "body": {
    "template": "abctemplate.html",
    "params": {
      "name": "Chase",
      "email": "1234@gmail.com"
    }
  },
  "to": [
    "abc@gmail.com",
    "xyz@gmail.com"
  ],
  "cc": [
    "xxx@example.com",
    "yyy@example.com"
  ],
  "replyTo": {
    "email": "aaa@gmail.com",
    "name": "Jack"
  },
  "bcc": "ccc@gmail.com",
  "subject": "Hello, world!"
}

将其映射并读入以下结构

type emailData struct {
    Body struct {
        Template string            `json:"template"`
        Params   map[string]string `json:"params"`
    } `json:"body"`
    To      map[string]string `json:"To"` // TODO This is wrong
    CC      string            `json:"cc"` // TODO this is wrong
    ReplyTo struct {
        Email string `json:"email"`
        Name  string `json:"name"`
    }
    BCC     string `json:"bcc"`
    Subject string `json:"subject"`
}

'to'和'cc'JSON字段都是未知长度的字符串数组,没有键。有没有办法将字符串数组映射到struct字段?我已经尝试了两种不同的方式,即// TODO标签没有运气。谢谢!

2 个答案:

答案 0 :(得分:1)

ccto都是json数组,您可以在不考虑长度的情况下将其解组到Go切片中。

type emailData struct {
    Body struct {
        Template string            `json:"template"`
        Params   map[string]string `json:"params"`
    } `json:"body"`
    To      []string `json:"to"`
    CC      []string `json:"cc"`
    ReplyTo struct {
        Email string `json:"email"`
        Name  string `json:"name"`
    }
    BCC     string `json:"bcc"`
    Subject string `json:"subject"`
}

https://play.golang.org/p/Pi_5aSs922

答案 1 :(得分:0)

使用以下命令在golang中将json转换为struct:

Json-goStruct

照顾地图,这可能是结构,反之亦然。

相关问题