南昌大型网站建设公司,app开发 深圳,装潢设计与制作专业,手机网站开发免费视频教程以map[int32]string转化为[]byte为例
背景#xff1a;算法传给我一个map[int32]string类型的值#xff08;map的值本身是json转化成的string#xff09;#xff0c;我需要把这个值生成一个文件上传到OSS#xff0c;但是发现通过url下载下来的文件里面有转义字符。 原因算法传给我一个map[int32]string类型的值map的值本身是json转化成的string我需要把这个值生成一个文件上传到OSS但是发现通过url下载下来的文件里面有转义字符。 原因直接通过json.json.Marshal()最后肯定会发生转义的。 解决搜索了一些方式发现都是会有转移的所以决定自己写一个Marshal()。
package mainimport (encoding/jsonfmt
)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] zhangresult1[age] 20result2 : make(map[string]string)result2[name] huangresult2[age] 20bytes1, 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))
}