
go 中按字典顺序排序并以 json 格式转换 map 的 md5 值与 php 不一致
为了在 go 中按字典顺序对 map 进行排序,我们使用 go 标准库中的 sort 包。该代码还会将排序后的 map 转换为 json 格式,并计算其 md5 值。
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
import (
"bytes"
"crypto/md5"
"encoding/hex"
"encoding/json"
"fmt"
"sort"
)
func main() {
params := map[string]string{
"name": "111",
"domain": "www.baidu.com?name=1&id=1",
}
// 按键排序
keys := make([]string, len(params))
i := 0
for k := range params {
keys[i] = k
i++
}
sort.Strings(keys)
// 拼接排序后的 Map
sortedParams := make([]string, len(params))
for i, k := range keys {
sortedParams[i] = fmt.Sprintf(`"%s":"%s"`, k, params[k])
}
sortedData := fmt.Sprintf("{%s}", strings.Join(sortedParams, ","))
// 计算 MD5 值
h := md5.New()
h.Write([]byte(sortedData))
fmt.Println(hex.EncodeToString(h.Sum(nil)))
}通过使用 sort 包对按键进行字典顺序排序,并将结果拼接为一个字符串,计算得到的 md5 值与 php 一致。
以上就是Go 中如何按字典顺序排序 Map 并计算其 JSON 格式的 MD5 值,以与 PHP 保持一致?的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号