2017-05-28 18 views
-2
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)) 
} 

输出:为什么我转换映射到JSON,地图包括列表中的值是什么转换后的JSON

d:/系统/服务器/转到\ BIN \ go.exe测试-v golang-test/com/http/test -run^Test_JsonTtransfer $ phoneList ======= 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 105 100 34 58 34 51 48 54 34 125] json ======= {“id_cards”:{ },“phones”:{},“uid”:“306”} ok golang-test/com/http/test 0.482s

电话应该是列表值,但没有。帮我。

回答

1

因为List类型没有导出字段,并且类型没有实现接口,所以列表值总是编组为{}

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

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

playground example

+0

对不起,你的答案是伟大的,但我不在乎的按钮了。我同意你的想法。 – Zonda

+0

我刚开始使用这个计算器,我应该采用你的建议,但现在我的疏忽,管理员帮我取消我的错误选择 – Zonda

相关问题