当前位置: 首页 > news >正文

go 自己写序列化函数不转义

以map[int32]string转化为[]byte为例

背景:算法传给我一个map[int32]string类型的值(map的值本身是json转化成的string),我需要把这个值生成一个文件上传到OSS,但是发现通过url下载下来的文件里面有转义字符。
原因:直接通过json.json.Marshal(),最后肯定会发生转义的。
解决:搜索了一些方式发现都是会有转移的,所以决定自己写一个Marshal()。

package mainimport ("encoding/json""fmt"
)type RawString stringfunc (r RawString) MarshalJSON() ([]byte, error) {return []byte(r), nil
}type RawBadCaseResult map[int32]RawStringfunc toRawResult(reviewResult map[int32]string) RawBadCaseResult {res := make(map[int32]RawString)for k, v := range reviewResult {res[k] = RawString(v)}return res
}func main() {result := make(map[int32]string)result1 := make(map[string]string)result1["name"] = "zhang"result1["age"] = "20"result2 := make(map[string]string)result2["name"] = "huang"result2["age"] = "20"bytes1, err := json.Marshal(result1)if err != nil {fmt.Println(err)}bytes2, err := json.Marshal(result2)if err != nil {fmt.Println(err)}result[1] = string(bytes1)result[2] = string(bytes2)rawReviewResult := toRawResult(result)var ReviewResultBytes []byte// 最后生成文件的时候传入的是ReviewResultBytes,通过url下载的文件没有转义字符了。ReviewResultBytes, err = json.Marshal(rawReviewResult)if err != nil {fmt.Println(err)}fmt.Println(string(ReviewResultBytes))
}

http://www.mrgr.cn/news/80680.html

相关文章:

  • Less和SCSS,哪个更好用?
  • c++:std::map下标运算符的不合理使用
  • Linux 计划任务管理工具全面解析:atq、cron、batch 和 at
  • 企业车辆管理系统(源码+数据库+报告)
  • 知道一个服务器IP地址如果attack服务器地址
  • Synchronous Serial Port 协议详解
  • linux安装mysql
  • 二、使用langchain搭建RAG:金融问答机器人--数据清洗和切片
  • Python 在Word文档中插入图片的3种方式(插入到段落、插入到指定位置、插入到每一页)
  • spring\strust\springboot\isp前后端那些事儿
  • 三、使用langchain搭建RAG:金融问答机器人--检索增强生成
  • iClient3D for Cesium 实现限高分析
  • 【Nginx-4】Nginx负载均衡策略详解
  • 阮一峰C语言教程_10字符串
  • 最新ubuntu20.04安装docker流畅教程
  • 数据结构十大排序之(冒泡,快排,并归)
  • 【济大期末数据库】SQL语法速成
  • 跟着AI 学AI开发二,本地部署自己的Chat GPT
  • 解决新安装CentOS 7系统mirrorlist.centos.org can‘t resolve问题
  • NLP-Huggingface基本使用方法
  • 网络攻与防
  • Javascript面试手撕常见题目(回顾一)
  • linux centos 7 安装 mongodb7
  • vue字母划分选择城市组件(国内国际)
  • docker(wsl)命令 帮助文档
  • 英飞源嵌入式面试题及参考答案