从另外一个项目抄过来的。
package wxpay
import (
"bytes"
"encoding/json"
"encoding/xml"
"io"
)
// ToJSON 转化成JSON字符
func (p Params) ToJSON() string {
mjson, _ := json.Marshal(p)
return string(mjson)
}
// Decode XML解码
func Decode(r io.Reader) Params {
var (
d *xml.Decoder
start *xml.StartElement
params Params
)
d = xml.NewDecoder(r)
params = make(Params)
for {
tok, err := d.Token()
if err != nil {
break
}
switch t := tok.(type) {
case xml.StartElement:
start = &t
case xml.CharData:
if t = bytes.TrimSpace(t); len(t) > 0 {
params.SetString(start.Name.Local, string(t))
}
}
}
return params
}
// Encode XML编码
func Encode(params Params) io.Reader {
var buf bytes.Buffer
buf.WriteString(``)
for k, v := range params {
buf.WriteString(`<`)
buf.WriteString(k)
buf.WriteString(`>`)
}
buf.WriteString(``)
return &buf
}
从另外一个项目抄过来的。
package wxpay import ( "bytes" "encoding/json" "encoding/xml" "io" ) // ToJSON 转化成JSON字符 func (p Params) ToJSON() string { mjson, _ := json.Marshal(p) return string(mjson) } // Decode XML解码 func Decode(r io.Reader) Params { var ( d *xml.Decoder start *xml.StartElement params Params ) d = xml.NewDecoder(r) params = make(Params) for { tok, err := d.Token() if err != nil { break } switch t := tok.(type) { case xml.StartElement: start = &t case xml.CharData: if t = bytes.TrimSpace(t); len(t) > 0 { params.SetString(start.Name.Local, string(t)) } } } return params } // Encode XML编码 func Encode(params Params) io.Reader { var buf bytes.Buffer buf.WriteString(``) for k, v := range params { buf.WriteString(`<`) buf.WriteString(k) buf.WriteString(`>`) } buf.WriteString(``) return &buf }