代码拉取完成,页面将自动刷新
// Copyright 2023 @Author:LiuBin(LineOfSight) 1440383523@qq.com. All rights reserved.
// Licensed under the MulanPSL-2.0 License.
package resob
import (
"strings"
)
// FindSetJsonNormalGrammaError detect normal gramma errors for a settempalte-json
// tml := "{\"set\":{\"key\":123456,\"putjsontest0\":{\"aaa\":\"!\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":1,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}}"
func (jr *JsonParser) FindSetJsonNormalGrammaError(tn string) (int, int, string, error) {
if strings.Compare(strings.ToLower(jr.jts[1].jttstr), JSONDTSETOPS) != 0 {
return 1, jr.jts[1].jtt, jr.jts[1].jttstr, ErrGramma
}
return jr.findPutJsonNormalGrammaError(tn)
}
// FindPutJsonNormalGrammaError detect normal gramma errors for a put-json
// a put-json has a fixed format, as follows:
// a put-json without a key, sys will generate a key:
// "{\"put\":{\"putjsontest\":{\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}}"
// a put-json with a key:
// "{\"put\":{\"key\":\"123456\",\"putjsontest\":{\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}}"
// a put-json for bat putting:
// "{\"put\":[{\"key\":\"123456\",\"putjsontest\":{\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}},{\"key\":\"1234560\",\"putjsontest\":{\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}]}"
func (jr *JsonParser) FindPutJsonNormalGrammaError(tn string) (int, int, string, error) {
if strings.Compare(strings.ToLower(jr.jts[1].jttstr), JSONDTPUTOPS) != 0 {
return 1, jr.jts[1].jtt, jr.jts[1].jttstr, ErrGramma
}
return jr.findPutJsonNormalGrammaError(tn)
}
func (jr *JsonParser) GetPutOrUpdOrDelJsonTn() string {
switch jr.jts[3].jtt {
// the difference between the items of arr-style put-json,must depend CheckArrTypeRoute
case JsonArrStart:
_bkey := strings.Compare(strings.ToLower(jr.jts[5].jttstr), JSONDTKEY) != 0
if _bkey {
return jr.jts[5].jttstr
} else if !_bkey {
return jr.jts[9].jttstr
}
case JsonObjStart:
_bkey := strings.Compare(strings.ToLower(jr.jts[4].jttstr), JSONDTKEY) != 0
if _bkey {
return jr.jts[4].jttstr
} else if !_bkey {
return jr.jts[8].jttstr
}
}
return ""
}
func (jr *JsonParser) findPutJsonNormalGrammaError(tn string) (int, int, string, error) {
switch jr.jts[3].jtt {
// the difference between the items of arr-style put-json,must depend CheckArrTypeRoute
case JsonArrStart:
_bkey := strings.Compare(strings.ToLower(jr.jts[5].jttstr), JSONDTKEY) != 0
if _bkey {
if tn != "" && strings.Compare(jr.jts[5].jttstr, tn) != 0 {
return 5, jr.jts[5].jtt, jr.jts[5].jttstr, ErrGramma
}
if jr.jts[7].jtt != JsonObjStart {
return 7, jr.jts[7].jtt, jr.jts[7].jttstr, ErrGramma
}
} else if !_bkey {
if tn != "" && strings.Compare(jr.jts[9].jttstr, tn) != 0 {
return 9, jr.jts[9].jtt, jr.jts[9].jttstr, ErrGramma
}
if jr.jts[11].jtt != JsonObjStart {
return 11, jr.jts[11].jtt, jr.jts[11].jttstr, ErrGramma
}
}
// EOF hold 1 pos
if jr.jts[len(jr.jts)-5].jtt != JsonObjEnd {
return len(jr.jts) - 5, jr.jts[len(jr.jts)-5].jtt, jr.jts[len(jr.jts)-5].jttstr, ErrGramma
} else {
n := 1
i := 12
if _bkey {
i = 8
}
for ; i <= len(jr.jts)-5; i++ {
if jr.jts[i].jtt == JsonObjStart {
n++
} else if jr.jts[i].jtt == JsonObjEnd {
n--
}
if n == 0 && i == len(jr.jts)-5 {
break
}
}
if i != len(jr.jts)-5 {
return i, jr.jts[i].jtt, jr.jts[i].jttstr, ErrGramma
}
}
case JsonObjStart:
_bkey := strings.Compare(strings.ToLower(jr.jts[4].jttstr), JSONDTKEY) != 0
if _bkey {
if tn != "" && strings.Compare(jr.jts[4].jttstr, tn) != 0 {
return 4, jr.jts[4].jtt, jr.jts[4].jttstr, ErrGramma
}
if jr.jts[6].jtt != JsonObjStart {
return 6, jr.jts[6].jtt, jr.jts[6].jttstr, ErrGramma
}
} else if !_bkey {
if tn != "" && strings.Compare(jr.jts[8].jttstr, tn) != 0 {
return 8, jr.jts[8].jtt, jr.jts[8].jttstr, ErrGramma
}
if jr.jts[10].jtt != JsonObjStart {
return 10, jr.jts[10].jtt, jr.jts[10].jttstr, ErrGramma
}
}
// EOF hold 1 pos
if jr.jts[len(jr.jts)-4].jtt != JsonObjEnd {
return len(jr.jts) - 4, jr.jts[len(jr.jts)-4].jtt, jr.jts[len(jr.jts)-4].jttstr, ErrGramma
} else {
n := 1
i := 11
if _bkey {
i = 7
}
for ; i <= len(jr.jts)-4; i++ {
if jr.jts[i].jtt == JsonObjStart {
n++
} else if jr.jts[i].jtt == JsonObjEnd {
n--
}
if n == 0 {
break
}
}
if i != len(jr.jts)-4 {
return i, jr.jts[i].jtt, jr.jts[i].jttstr, ErrGramma
}
}
}
return jr.jts[3].jtt, -1, "", nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。