2 回答
TA贡献1846条经验 获得超7个赞
不,您不能即时转换地图。在填充新地图之前,您需要拥有原始地图(然后可以将其删除)。
你必须问自己的第一个问题:你打算用那个 json 做什么,因为现代计算机有很多 RAM,所以即使存储 4gb 也不成问题(我非常怀疑你会发送 4gb json 请求) .
一旦你知道你为什么要编码你的东西,你就可以寻找合适的格式。
例如,您可以序列化您的地图。
package main
import (
"fmt"
"encoding/gob"
"bytes"
)
var m = map[int]string{1:"one", 2: "two", 3: "three"}
func main() {
buf := new(bytes.Buffer)
encoder := gob.NewEncoder(buf)
err := encoder.Encode(m)
if err != nil {
panic(err)
}
// your encoded stuff
fmt.Println(buf.Bytes())
var decodedMap map[int]string
decoder := gob.NewDecoder(buf)
err = decoder.Decode(&decodedMap)
if err != nil {
panic(err)
}
fmt.Printf("%#v\n", decodedMap)
}
TA贡献1877条经验 获得超6个赞
在代码中进行编码。这很容易,而且作为奖励可能会更快。
这应该有效:
var buf bytes.Buffer
first := true
fmt.Fprint(&buf, "{")
for k, v := range m {
if first {
first = false
} else {
fmt.Fprint(&buf, ",")
}
fmt.Fprintf(&buf, `"%d":%d`, k, v)
}
fmt.Fprint(&buf, "}")
如果您需要将此传递给encoding/json您可以使用json.RawMessage(buf.Bytes()).
- 2 回答
- 0 关注
- 203 浏览
添加回答
举报