beegoinit/response/json.go

84 lines
1.5 KiB
Go

package response
import (
"bytes"
"encoding/json"
)
const (
JsonMsgDefaultOk = "ok"
JsonMsgDefaultFailed = "unknown error"
)
type Json struct {
Code int `json:"code"`
Data interface{} `json:"data,omitempty"`
Msg string `json:"msg"`
Status bool `json:"status"`
}
func (j *Json) GetDefaultSuccessCode() int {
return 0
}
func (j *Json) GetDefaultFailedCode() int {
return 10086
}
func (j *Json) SetCode(code int) {
j.Code = code
}
func (j *Json) SetMessage(msg string) {
j.Msg = msg
}
func (j *Json) SetData(data interface{}) {
j.Data = data
}
func (j *Json) SetStatus(status bool) {
j.Status = status
}
func (j *Json) String() string {
s, _ := j.ToString()
return s
}
func (j *Json) ToString() (str string, err error) {
var b []byte
b, err = json.Marshal(j)
return bytes.NewBuffer(b).String(), err
}
func NewJsonByDefaultSuccess(data ...interface{}) JsonInterface {
return NewJson(true, 0, JsonMsgDefaultOk, data...)
}
func NewJsonByDefaultFailed(data ...interface{}) JsonInterface {
return NewJson(false, 1, JsonMsgDefaultFailed, data...)
}
func NewJonsByFailed(code int, msg string) JsonInterface {
return NewJson(false, code, msg)
}
func NewJson(status bool, code int, msg string, data ...interface{}) JsonInterface {
if len(data) > 0 {
return &Json{
Code: code,
Data: data[0],
Msg: msg,
Status: status,
}
} else {
return &Json{
Code: code,
Data: nil,
Msg: msg,
Status: status,
}
}
}