【问题标题】:Why do I convert map to json, map includes list values which is nothing after converting to json为什么我要将map转换为json,map包含列表值,转换为json后什么都没有
【发布时间】:2017-05-28 05:29:25
【问题描述】:
func Test_JsonTtransfer(t *testing.T) {

    uid := "306"
    phoneList := list.New()
    phoneList.PushBack("18513622928")
    fmt.Println("phoneList=======", phoneList.Len())


    jsonPhoneList, err := json.Marshal(phoneList)
    if err != nil {
        fmt.Println("error:", err)
    }
    fmt.Println("jsonPhoneList=======", string(jsonPhoneList))

    idCardList := list.New()
    idCardList.PushBack("230405197608040640")

    request := make(map[string]interface{})
    request["uid"] = uid

    request["phones"] = phoneList

    request["id_cards"] = idCardList

    json, err := json.Marshal(request)
    if err != nil {
        fmt.Println("error:", err)
    }

    fmt.Println("json=======", json)
    fmt.Println("json=======", string(json))
}

输出:

D:/Sys/server/Go\bin\go.exe test -v golang-test/com/http/test -run ^Test_JsonTtransfer$ 电话列表======= 1 jsonPhoneList======= {} json======= [123 34 105 100 95 99 97 114 100 115 34 58 123 125 44 34 112 104 111 110 101 115 34 58 123 125 44 34 117 1034521 48 4558] json======= {"id_cards":{},"phones":{},"uid":"306"} 好的 golang-test/com/http/test 0.482s

电话应该是列表值,但什么都不是。帮帮我。

【问题讨论】:

    标签: json list go


    【解决方案1】:

    因为List 类型没有导出字段并且该类型没有实现Marshaler接口,所以列表值总是封送到文本{}

    一个简单的解决方法是使用切片而不是列表:

    var phoneList []string
    phoneList = append(phoneList, "18513622928")
    fmt.Println("phoneList=======", len(phoneList)
    

    playground example

    【讨论】:

    • 对不起,你的回答很好,但我不在乎按下按钮。我同意你的想法。
    • 我刚开始使用这个stackoverflow,我应该采纳你的建议,但现在由于我的疏忽,管理员帮我取消了我的错误选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2012-11-23
    • 2015-01-10
    • 2019-05-31
    • 1970-01-01
    • 2012-10-19
    • 2015-06-03
    相关资源
    最近更新 更多