From 4078f1de85299699760049fda12578380721c18f Mon Sep 17 00:00:00 2001 From: lxinyu Date: Sat, 2 Nov 2024 16:56:18 +0800 Subject: [PATCH] Signed-off-by: lxinyu --- README.md | 3 ++ go.mod | 18 +++++++ go.sum | 55 +++++++++++++++++++ 存取键值表.go | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 219 insertions(+) create mode 100644 README.md create mode 100644 go.mod create mode 100644 go.sum create mode 100644 存取键值表.go diff --git a/README.md b/README.md new file mode 100644 index 0000000..c3bc378 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +存取键值表 + +json用即可! \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..5072ea0 --- /dev/null +++ b/go.mod @@ -0,0 +1,18 @@ +module cqjzb + +go 1.19 + +require ( + gitlab.lxinyu.cn/lxinyu/go/c v0.0.0 + gitlab.lxinyu.cn/lxinyu/go/gabs v0.0.0 +) + +require ( + github.com/gogf/gf v1.16.8 // indirect + golang.org/x/text v0.3.7 // indirect +) + +replace ( + gitlab.lxinyu.cn/lxinyu/go/c => C:\Users\Administrator\go\src\gitlab.lxinyu.cn\lxinyu\go\c + gitlab.lxinyu.cn/lxinyu/go/gabs => C:\Users\Administrator\go\src\gitlab.lxinyu.cn\lxinyu\go\gabs +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..46a2666 --- /dev/null +++ b/go.sum @@ -0,0 +1,55 @@ +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/clbanning/mxj v1.8.5-0.20200714211355-ff02cfb8ea28 h1:LdXxtjzvZYhhUaonAaAKArG3pyC67kGL3YY+6hGG8G4= +github.com/clbanning/mxj v1.8.5-0.20200714211355-ff02cfb8ea28/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= +github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/gogf/gf v1.16.8 h1:iVXUB+QPQIYDMMjMdDb6ZINF8xf5bWy54XxAo600zMs= +github.com/gogf/gf v1.16.8/go.mod h1:8Q/kw05nlVRp+4vv7XASBsMe9L1tsVKiGoeP2AHnlkk= +github.com/gomodule/redigo v1.8.5 h1:nRAxCa+SVsyjSBrtZmG/cqb6VbTmuRzpg/PoTFlpumc= +github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grokify/html-strip-tags-go v0.0.1 h1:0fThFwLbW7P/kOiTBs03FsJSV9RM2M/Q/MOnCQxKMo0= +github.com/grokify/html-strip-tags-go v0.0.1/go.mod h1:2Su6romC5/1VXOQMaWL2yb618ARB8iVo6/DR99A6d78= +github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +go.opentelemetry.io/otel v1.0.0 h1:qTTn6x71GVBvoafHK/yaRUmFzI4LcONZD0/kXxl5PHI= +go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= +go.opentelemetry.io/otel/trace v1.0.0 h1:TSBr8GTEtKevYMG/2d21M989r5WJYVimhTHBKVEZuh4= +go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/存取键值表.go b/存取键值表.go new file mode 100644 index 0000000..f1d5303 --- /dev/null +++ b/存取键值表.go @@ -0,0 +1,143 @@ +// 存取值用的键值对象 +// 等同于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 +}