golang+json-iterator(微信ウィジェットプッシュ通知例)

2039 ワード

構造体は次のとおりです.
type WxPushContent struct {
    Push_record_id   int    `json:"push_record_id"`
    Template_id      string `json:"template_id"`
    Page             string `json:"page"`
    Data             Data   `json:"data"`
    Emphasis_keyword string `json:"emphasis_keyword"`
}

type Data struct {
    Keyword1 WxKeyword `json:"keyword1"`
    Keyword2 WxKeyword `json:"keyword2"`
    Keyword3 WxKeyword `json:"keyword3"`
}

type WxKeyword struct {
    Value string `json:"value"`
}

実際のコードは次のとおりです.
func ExecutePush_WX(ctx *gin.Context) {
  var json_iterator = jsoniter.ConfigCompatibleWithStandardLibrary

  jsonWxPushContent, _ := json_iterator.Marshal(models.WxPushContent{
    Push_record_id:   note.Id,
    Template_id:      setting.MINITemplateId,
    Page:             "/pages/detail?isShare=true&isFromPush=" + strconv.Itoa(note.Id) + "&id=" + strconv.FormatInt(note.NewsId, 10),
    Data:             models.Data{
      Keyword1:models.WxKeyword{Value: "    "},
      Keyword2:models.WxKeyword{Value: news.Title},
      Keyword3:models.WxKeyword{Value: tt[0].Summary},
    },
    Emphasis_keyword: "keyword1.DATA"})
  }

  log.Println("   -      : ", string(jsonWxPushContent))

結果を返します.
{
    "push_record_id":33,
    "template_id":"3OviTbpRI-7t8GJxlaoKtyQM6SuOXnROVk-jwj-T-GI",
    "page":"/pages/detail?isShare=true&isFromPush=33&id=63688",
    "data":{
        "keyword1":{
            "value":"    "
        },
        "keyword2":{
            "value":"               ?"
        },
        "keyword3":{
            "value":"   ,                       ,                 ,              "
        }
    }
    "emphasis_keyword":"keyword1.DATA"
}

その後、微信ウィジェットapiアドレスを要求します!