具有字符串鍵的JSON format僅指定鍵/值的對象。因此,encoding/json
軟件包也只支持字符串鍵。
的json/encoding
文檔狀態:
BOOL,用於JSON布爾
float64,用於JSON數字
字符串,JSON字符串
[]接口{},對於JSON陣列
地圖[串] interface {},用於JSON對象
無JSON null
如果你想使用encoding/json
包並將其移動到地圖[INT] float64,你可以做以下(含FLOAT32工作以及):
package main
import (
"fmt"
"strconv"
)
func main() {
a := map[string]float64{"1":1, "2":4, "3":9, "5":25}
b := make(map[int]float64, len(a))
for k,v := range a {
if i, err := strconv.Atoi(k); err == nil {
b[i] = v
} else {
// A non integer key
}
}
fmt.Printf("%#v\n", b)
}
Playground
提示:通過http://jsonlint.com/運行你的json文件,看看它對你的「json」有什麼感覺。 – Crisfole
'結果 有效的JSON.' 我曾經提到過我的json文件有問題嗎? – ybycode
不,但將數字用作json文件中的鍵是無效的,並且會導致大多數json工具自動將它們轉換爲字符串。你可能能夠分解編碼/ json包,並讓它做你想做的事情......但無論如何,我的投票都是在@@ ANisus的(正確的)答案 – Crisfole