golang json.Marshal 避免转义html

在对接微信客服消息的时候,发现换行符、a标签等都被转义了。调查发现是在对结构体调用json.Marshal发生的。https://godoc.org/encoding/json#MarshalString values encode as JSON strings coerced to valid UTF-8, replacing invalid bytes with the Unicode replacement rune. The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e" to keep some browsers from misinterpreting JSON output as HTML.…

golang http客户端使用http代理/socks代理

网上流传的用法大都引用了 golang.org/x/net/proxy(并且使用了已经deprecated的dialer),实际上现在可以直接用这种更简单的写法。package main import ( "fmt" "io/ioutil" "net/http" "net/url" ) const ( HttpProxy = "http://127.0.0.1:6152" SocksProxy = "socks5://127.0.0.1:6153" ) func main() { proxy := func(_ *http.Request) (*url.URL, error) { return url.Parse(HttpProxy) } httpTransport := &http.Transport{…

在公司和个人项目中自动切换git commiter信息

代码目录 ~/Code公司项目目录 ~/Code/Work.gitconfig[includeIf "gitdir:~/Code/"] path = .gitconfig-personal [includeIf "gitdir:~/Code/Work/"] path = .gitconfig-work .gitconfig-personal[user] name = solarhell email = songjiaxin2008@gmail.com .gitconfig-work[user] name = 程序员 email = 程序员@公司.com…

golang 解析可变类型 json 字段

在接入一些php后台时,可能会遇到返回的json字段类型变化的情况(即字段类型不规范的情况)。这时候可以选择简单的用interface去解析。当然,还可以使用json.RawMessage来更好的匹配情况。{ "code": 0, "data": "xxx", "error": [] } { "code": -3031, "data": "xxx", "error": { "code": -3031, "msg": "密码错误" } } 这里error字段其实是可以根据外部code是否为0来判断类型的。还有一种办法是对error这个struct定义一个unmarshal方法。type Error interface{} func (e Error) Unmarshal() { }…