如何在golang中使用变量设置json标记?

时间:2016-04-01 22:22:36

标签: json go

有没有办法设置结构的字段标记? 例如:

type contact struct {
    Mail string `json:"contact"`
}

newStruct := setTag(temp, "Mail", "mail")

data, _ := json.Marshaller(qwe)
fmt.Println(data)

并接受此有效负载:

{
    "mail": "blabla"
}

2 个答案:

答案 0 :(得分:2)

看起来你希望你的json密钥是一个变量。您可以使用map数据类型执行此操作。

package main

import "fmt"
import "encoding/json"

func main() {
    asd := "mail"
    qwe := make(map[string]string)

    qwe[asd] = "jack"

    data, _ := json.Marshal(qwe)
    fmt.Println(string(data))  // Prints "{mail: jack}"
}

  playground

答案 1 :(得分:0)

您必须导出密钥。 Working example

来自godoc的包json.Marshal,

  

Struct值编码为JSON对象。每个导出的struct字段   成为对象的成员,除非

     
      
  • 字段的标记为“ - ”或
  •   
  • 该字段为空,其标签指定“omitempty”选项。
  •