我有这条数据:
productID, err := products.Insert(map[string]interface{}{
"Properties": map[string]interface{}{
strconv.Itoa(propertyNameID): map[string]string{
"en": "Jeans Jersey",
"nl": "Broek Jersey",
},
strconv.Itoa(propertyColorID): propertyOptionRedID,
},
"Type": productTypeID,
"Propertyset": propertysetID,
"Active": true,
"EAN13": "1234567890123"})
所有***ID
个变量都属于int
类型。可悲的是,当我做一名普通的元帅时:
{
"Active":true,
"EAN13":"1234567890123",
"Properties":{
"2286408386526632249":{
"en":"Jeans Jersey",
"nl":"Broek Jersey"
},
"4750062295175300168":7.908474319828591e+18
},
"Propertyset":8.882218269088507e+18,
"Type":7.185126253999425e+18
}
...有些整数被转换为float
类型的权力。
Itoa
仍然只是一些测试,因为编组器不能执行map[int]interface{}
(索引值为整数的列表)。我只是不明白为什么int
值会更改为“显示”值,而不是纯值。
更新:我尝试使用map[string]int
只有一个条目的“属性”。结果仍然相同:(
答案 0 :(得分:2)
您可以在json中将int64编组为字符串,以避免使用string
标记转换为float64
type T struct {
Val int64 `json:"val,string"`
}
t := T{Val: math.MaxInt64}
j, _ := json.Marshal(t)
fmt.Println(string(j))
// {"val":"9223372036854775807"}