登录
首页 >  Golang >  Go教程

Go map 按字典升序转 JSON 后 MD5 与 PHP 不一致,如何解决?

时间:2024-11-01 21:12:55 188浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《Go map 按字典升序转 JSON 后 MD5 与 PHP 不一致,如何解决?》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

Go map 按字典升序转 JSON 后 MD5 与 PHP 不一致,如何解决?

go map 按字典升序后转 json md5 与 php 不一致问题

在 go 中,使用 map 类型的有序特性进行排序后,转化为 json 字符串并计算 md5 值时,与 php 的计算结果不一致。如何解决此问题?

解决方案:

已在 [wp.hellocode.name](https://wp.hellocode.name/?p=...) 解决了此问题。

原理:

  • 使用 encoding/json 包时,默认会对特殊字符进行转义。这会导致排序后的 json 字符串与 php 的排序结果不同。
  • 要解决此问题,需要在使用 json 编码器时明确指定 setescapehtml(false),禁止特殊字符转义。
  • 修改后的代码如下:
// ...

byteBuf := bytes.NewBuffer([]byte{})
encoder := json.NewEncoder(byteBuf)
// 特殊字符不转义
encoder.SetEscapeHTML(false)
err := encoder.Encode(params)

以上就是《Go map 按字典升序转 JSON 后 MD5 与 PHP 不一致,如何解决?》的详细内容,更多关于的资料请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>