首页 > 解决方案 > Go - 无法解析嵌套结构

问题描述

我有以下结构

type logs struct {
    Email      string
    Account    string
    BranchName string `json:"branch_name"`
    Token      string
    Actions    []action
}

type action struct {
    time string
    name string
    data string
}

和要解析的代码

func logsHandler(writer http.ResponseWriter, request *http.Request) {
    decoder := json.NewDecoder(request.Body)
    var l logs
    err := decoder.Decode(&l)
    if err != nil {
        panic(err)
    }

    writeResponse("ok", http.StatusOK, writer)

    sendLogsEmail(l)
}

和json

{
    "email": "some@mail.ru",
    "account": "some_account",
    "branch_name": "some_branch",
    "token": "some_token",
    "actions": [
        {
            "time": "12:12:12",
            "name": "some_name",
            "data": "some_data"
        },
        {
            "time": "12:12:12",
            "name": "some_name1",
            "data": "some_data1"
        }
    ]
}

解析时得到输出

{some@mail.ru some_account some_branch some_token [{  } {  }]}

我究竟做错了什么 ?

标签: go

解决方案


action应该导出结构中的字段:

type action struct {
    Time string // notice the first capital letter
    Name string
    Data string
}

然后你应该得到预期的结果:

{some@mail.ru some_account some_branch some_token [{12:12:12 some_name some_data} {12:12:12 some_name1 some_data1}]}

推荐阅读