cqjzb/存取键值表.go

144 lines
4.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 存取值用的键值对象
// 等同于Java中的HashMap 或 C#中的Dictionary对象
package cqjzb
import (
//. "github.com/duolabmeng6/goefun/core"
//"github.com/duolabmeng6/goefun/os/gabs"
. "git.lxinyu.cn/lxinyu/c"
"git.lxinyu.cn/lxinyu/gabs"
)
type EJson struct {
Json *gabs.Container
}
type H map[string]interface{}
func New存取键值表() *EJson {
x := new(EJson).Init()
return x
}
func NewJson() *EJson {
x := new(EJson).Init()
return x
}
func (this *EJson) Init() *EJson {
this.Json = gabs.New()
return this
}
func (this *EJson) Clear() *EJson {
this.Json = gabs.New()
return this
}
func (this *EJson) Del(key string) error {
return this.Json.DeleteP(key)
}
func (this *EJson) E删除(key string) error {
return this.Json.DeleteP(key)
}
func (this *EJson) GetString(key string) string {
if this.Json.ExistsP(key) {
//str := this.Json.Path(key).Data().(string)
return C到文本(this.Json.Path(key).Data())
}
return ""
}
func (this *EJson) E取文本(key string) string {
return this.GetString(key)
}
func (this *EJson) GetInt(key string) int64 {
if this.Json.ExistsP(key) {
value := C到整数(this.Json.Path(key).Data())
return value
}
return 0
}
func (this *EJson) E取值(key string) int64 {
return this.GetInt(key)
}
func (this *EJson) GetBool(key string) bool {
if this.Json.ExistsP(key) {
value := this.Json.Path(key).Data().(bool)
return value
}
return false
}
func (this *EJson) E取逻辑值(key string) bool {
return this.GetBool(key)
}
func (this *EJson) Set(key string, value interface{}) {
_, _ = this.Json.SetP(value, key)
}
func (this *EJson) SetArray(key string, value interface{}) {
//_, _ = this.Json.ArrayP(key)
_ = this.Json.ArrayAppendP(value, key)
}
func (this *EJson) Data() interface{} {
return this.Json.Data()
}
func (this *EJson) LoadFromJsonFile(filepath string) bool {
data := C读入文件(filepath)
//fmt.Printf(string(data))
var err error
this.Json, err = gabs.ParseJSON(data)
//fmt.Print(err)
return err != nil
}
func (this *EJson) LoadFromJsonString(data string) bool {
var err error
this.Json, err = gabs.ParseJSON(C到字节集(data))
//fmt.Print(err)
return err != nil
}
//调用格式: 〈文本型〉 对象到JSON (逻辑型 是否修饰,[逻辑型 是否UNICODE整数型 主键排序方式]) - E2EE互联网服务器套件2.2.3->存取键值表
//英文名称ToJSON
//内容转换到JSON文本。本命令为初级对象成员命令。
//参数<1>的名称为“是否修饰”类型为“逻辑型bool初始值为“假”。修饰后输出的内容更便于阅读。效率会稍微低一点。
//参数<2>的名称为“是否UNICODE”类型为“逻辑型bool可以被省略。是否输出为UNICODE文本。如果为空则默认为假如果为真则中文等字符将转换为UNICODE并转换为以“\u”开头带四位十六进制文本的内容。
//参数<3>的名称为“主键排序方式”类型为“整数型int可以被省略。当前键值表和所有下级键值表输出时的主键排序方式。[0] 不排序 [1] 正向排序 [2] 反向排序。如果为空则默认为0。
//
//操作系统需求: Windows
func (this *EJson) ToJson(是否修饰 bool) string {
if 是否修饰 {
return this.Json.StringIndent("", " ")
} else {
return this.Json.String()
}
}
func (this *EJson) E到JSON(是否修饰 bool) string {
return this.ToJson(是否修饰)
}
func (this *EJson) GetArrayCount(s string) int {
int, _ := this.Json.ArrayCountP(s)
return int
}
// GetArrayAllData 获取某个数组里面的所有数据
//
// for i, object := range v.GetArrayAllData("array.list") {
// fmt.Printf("i:%s value:%s \n", i, object.Path("avg").Data().(string))
// fmt.Printf("i:%s value:%s \n", i, object.Path("avg").ToString())
// fmt.Printf("i:%s value:%s \n", i, object.Path("avg").ToInt())
// fmt.Printf("i:%s value:%s \n", i, object.GetString("avg"))
// }
func (this *EJson) GetArrayAllData(s string) []*gabs.Container {
objects := this.Json.Path(s).Children()
return objects
}