Ai
4 Star 17 Fork 8

NightTC/Gobige

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
JsonData.go 4.08 KB
一键复制 编辑 原始数据 按行查看 历史
package common
import "encoding/json"
// JsonMap 表示 JSON 对象的键值对映射。
type JsonMap map[string]interface{}
// Get 获取指定键的值。
func (js JsonMap) Get(key string) interface{} {
return js[key]
}
// GetInt32 获取 int32 类型的值。
func (js JsonMap) GetInt32(key string) int32 {
return int32(js.Get(key).(float64))
}
// GetInt32IfExist 获取 int32 类型的值,如果键不存在则返回 -1。
func (js JsonMap) GetInt32IfExist(key string) int32 {
if node := js.Get(key); node != nil {
return int32(node.(float64))
} else {
return -1
}
}
// 返回float32类型
func (js JsonMap) GetFloat32(key string) float32 {
return float32(js.Get(key).(float64))
}
// 返回uint16类型
func (js JsonMap) GetUInt16(key string) uint16 {
return uint16(js.Get(key).(float64))
}
// 返回uint32类型
func (js JsonMap) GetUInt32(key string) uint32 {
return uint32(js.Get(key).(float64))
}
func (js JsonMap) GetUInt64(key string) uint64 {
return uint64(js.Get(key).(float64))
}
// 返回int64类型
func (js JsonMap) GetInt64(key string) int64 {
return int64(js.Get(key).(float64))
}
// 返回int64类型,如果没有该字段就返回-1
func (js JsonMap) GetInt64IfExist(key string) int64 {
if node := js.Get(key); node != nil {
return int64(node.(float64))
} else {
return -1
}
}
// 返回bool类型
func (js JsonMap) GetBool(key string) bool {
if js.Get(key) == nil {
return false
}
return js.Get(key).(bool)
}
// 返回string
func (js JsonMap) GetStringNode(key string) string {
return js.Get(key).(string)
}
// 返回一个JsonArray
func (js JsonMap) GetArray(key string) JsonArray {
v := js[key].([]interface{})
return JsonArray(v)
}
// 返回一个JsonArray,错误返回空
func (js JsonMap) GetArrayIfExist(key string) JsonArray {
if v, ok := js[key]; ok {
if result, ok := v.([]interface{}); ok {
return JsonArray(result)
}
}
return JsonArray{}
}
// 返回一个JsonMap
func (js JsonMap) GetMap(key string) JsonMap {
v := js[key].(map[string]interface{})
return JsonMap(v)
}
// 返回[]int
func (js JsonMap) GetIntArray(key string) []int {
return js.GetArray(key).GetIntArray()
}
// 返回 []int32
func (js JsonMap) GetInt32Array(key string) []int32 {
var arr []int32
for _, v := range js.GetArray(key) {
arr = append(arr, int32(v.(float64)))
}
return arr
}
// 返回[]iny32
func (js JsonMap) GetInt32ArrayIfExist(key string) []int32 {
var arr []int32
for _, v := range js.GetArrayIfExist(key) {
arr = append(arr, int32(v.(float64)))
}
return arr
}
func (js JsonMap) GetString(key string) *String {
return NewStringAny(js[key])
}
type JsonArray []interface{}
func (js JsonArray) GetArray(index int) JsonArray {
v := js[index].([]interface{})
return JsonArray(v)
}
func (js JsonArray) GetMap(index int) JsonMap {
v := js[index].(map[string]interface{})
return JsonMap(v)
}
func (js JsonArray) GetIntArray() []int {
result := make([]int, len(js))
for i, v := range js {
result[i] = NewStringAny(v).ToIntV()
}
return result
}
func (js JsonArray) GetStringArray() []string {
result := make([]string, len(js))
for i, v := range js {
result[i] = NewStringAny(v).String()
}
return result
}
func (js JsonArray) GetString(index int) *String {
return NewStringAny(js[index])
}
func (js JsonMap) Marshal() (dAtA []byte, err error) {
return json.Marshal(js)
}
func (js JsonMap) MarshalTo(dAtA []byte) (int, error) {
d, err := js.Marshal()
if err != nil {
return 0, err
}
return copy(dAtA, d), nil
}
func (js JsonMap) Unmarshal(dAtA []byte) error {
return json.Unmarshal(dAtA, &js)
}
func (js JsonMap) Size() (n int) {
jsonBytes, _ := js.Marshal()
return len(jsonBytes)
}
func (js JsonMap) Name() string {
return "JsonMap"
}
func (js JsonMap) Descriptor() ([]byte, []int) {
return nil, nil
}
func (js JsonMap) Reset() {
}
func (js JsonMap) String() string {
jsonBytes, _ := json.MarshalIndent(js, "", " ")
return string(jsonBytes)
}
func (js JsonMap) ProtoMessage() {
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/night-tc/gobige.git
git@gitee.com:night-tc/gobige.git
night-tc
gobige
Gobige
3e11984fb1ba

搜索帮助