代码拉取完成,页面将自动刷新
// Copyright 2018 The OpenPitrix Authors. All rights reserved.
// Use of this source code is governed by a Apache license
// that can be found in the LICENSE file.
package jsonutil
import (
"encoding/json"
"log"
"github.com/bitly/go-simplejson"
)
func Encode(o interface{}) ([]byte, error) {
return json.Marshal(o)
}
func Decode(y []byte, o interface{}) error {
return json.Unmarshal(y, o)
}
func ToString(o interface{}) string {
b, err := Encode(o)
if err != nil {
return ""
}
return string(b)
}
// FIXME: need improve performance
func ToJson(o interface{}) Json {
var j Json
j = &fakeJson{simplejson.New()}
b, err := Encode(o)
if err != nil {
log.Printf("Failed to encode [%+v] to []byte, error: %+v", o, err)
return j
}
j, err = NewJson(b)
if err != nil {
log.Printf("Failed to decode [%+v] to Json, error: %+v", o, err)
}
return j
}
type fakeJson struct {
*simplejson.Json
}
func NewJson(y []byte) (Json, error) {
j, err := simplejson.NewJson(y)
return &fakeJson{j}, err
}
func (j *fakeJson) Get(key string) Json {
return &fakeJson{j.Json.Get(key)}
}
func (j *fakeJson) GetPath(branch ...string) Json {
return &fakeJson{j.Json.GetPath(branch...)}
}
func (j *fakeJson) CheckGet(key string) (Json, bool) {
result, ok := j.Json.CheckGet(key)
return &fakeJson{result}, ok
}
//
//func (j *fakeJson) UnmarshalJSON(p []byte) error {
// return j.Json.UnmarshalJSON(p)
//}
//
//func (j *fakeJson) MarshalJSON() ([]byte, error) {
// return j.Json.MarshalJSON()
//}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。