dpjjr42626 2015-02-12 00:38
浏览 50
已采纳

在Golang中解析JSON不会填充对象

As part of an Oauth application, I need to decode some JSON. But I cannot get the object populated. There is no failure, but the data just isn't there. I've tried a bunch of different ways...

I have recreated the problem at http://play.golang.org/p/QGkcl61cmv

import (
    "encoding/json"
    "fmt"
    "strings"
   )

type RefreshTokenData struct {
    id            string `json:"id"`
    issued_at     string `json:"issued_at"`
    scope         string `json:"scope"`
    instance_url  string `json:"instance_url"`
    token_type    string `json:"token_type"`
    refresh_token string `json:"refresh_token"`
    signature     string `json:"signature"`
    access_token  string `json:"access_token"`
}

func main() {
    var tokenResp = `
    {"id":"https://google.com","issued_at":"1423698767063",
    "scope":"full refresh_token",
    "instance_url":"https://na15.salesforce.com",
    "token_type":"Bearer",
    "refresh_token":"2os53__CCU5JX_yZXE",
    "id_token":"5jSH0Oqm7Q4fc0xkE9NOvW8cA13U",
    "signature":"/599EkGVIBsKPFRNkg+58wZ3Q7AFyclvIGvCrxVeyTo=",
    "access_token":"sadfasdfasdfasdfdsa"}`

    var tokenData RefreshTokenData
    decoder := json.NewDecoder(strings.NewReader(tokenResp))
    if jsonerr := decoder.Decode(&tokenData); jsonerr != nil {
        fmt.Println("****Failed to decode json")
    } else {
        fmt.Println("****Refresh token: " + tokenData.refresh_token)
    }
}
  • 写回答

1条回答 默认 最新

  • 普通网友 2015-02-12 01:19
    关注

    The JSON encoding package works with exported fields only. Capitalize the field names to export them:

    type RefreshTokenData struct {
      Id            string `json:"id"`
      Issued_at     string `json:"issued_at"`
      Scope         string `json:"scope"`
      Instance_url  string `json:"instance_url"`
      Token_type    string `json:"token_type"`
      Refresh_token string `json:"refresh_token"`
      Signature     string `json:"signature"`
      Access_token  string `json:"access_token"`
    }
    

    playground example

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线