移除冗余代码
This commit is contained in:
parent
8d2e9c93ae
commit
aea79b341c
21
lexical.go
21
lexical.go
@ -49,7 +49,8 @@ func (l *lexical) Parse(jsonData string) ([]*lexicalNode, error) {
|
||||
tmpStr := ""
|
||||
for _, itemChar := range jsonData {
|
||||
currentChar := string(itemChar)
|
||||
if l.inputCharIsToken(currentChar, tmpStr) {
|
||||
tmpStrType := l.getTmpStrType(tmpStr)
|
||||
if l.inputCharIsToken(currentChar, tmpStr, tmpStrType) {
|
||||
if currentChar == keyLeftRightToken {
|
||||
// 双引号计数
|
||||
l.keyLeftRightTokenCnt++
|
||||
@ -72,20 +73,13 @@ func (l *lexical) Parse(jsonData string) ([]*lexicalNode, error) {
|
||||
// 当前字符是空格, 只有在 "" 之间方才有效 , 关键字之间的空格, 忽略即可
|
||||
continue
|
||||
}
|
||||
tmpStr = tmpStr + currentChar
|
||||
if (tmpStr == "\n" || tmpStr == "\t") && l.keyLeftRightTokenCnt%2 == 0 {
|
||||
// 不在 "" 之间的 \n \t 无意义, 过滤掉
|
||||
tmpStr = ""
|
||||
if (currentChar == "\n" || currentChar == "\t") && (l.keyLeftRightTokenCnt%2 == 0 || tmpStrType == "number" || tmpStrType == "bool") {
|
||||
// 数字或者 bool 之后的 \n \t 无意义 , 不在 "" 之间也无意义
|
||||
continue
|
||||
}
|
||||
tmpStr = tmpStr + currentChar
|
||||
}
|
||||
}
|
||||
if len(tmpStr) > 0 {
|
||||
l.lexicalResult = append(l.lexicalResult, &lexicalNode{
|
||||
Val: tmpStr,
|
||||
IsToken: false,
|
||||
})
|
||||
tmpStr = ""
|
||||
}
|
||||
|
||||
return l.lexicalResult, nil
|
||||
}
|
||||
@ -95,7 +89,7 @@ func (l *lexical) Parse(jsonData string) ([]*lexicalNode, error) {
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 18:15 2022/7/4
|
||||
func (l *lexical) inputCharIsToken(inputChar string, tmpStr string) bool {
|
||||
func (l *lexical) inputCharIsToken(inputChar string, tmpStr string, tmpStrType string) bool {
|
||||
tokenList := []string{
|
||||
// list 类型起始
|
||||
listLeftToken,
|
||||
@ -161,7 +155,6 @@ func (l *lexical) inputCharIsToken(inputChar string, tmpStr string) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
tmpStrType := l.getTmpStrType(tmpStr)
|
||||
// , 是关键字的场景
|
||||
// {"name":"zhangsan", "age":"18"}
|
||||
// [{"name":"zhangsan", "age":"18"}, {"name":"zhangsan", "age":"18"}]
|
||||
|
@ -32,6 +32,7 @@ func Test_parseLexical(t *testing.T) {
|
||||
]
|
||||
}`
|
||||
//jsonData = `{"name":"zhangsan","age":"18","extension":{"sex":"man","height":"180"},"teacher_list":[{"name":"t1","age":"11"},{"name":"t2","age":"12"}]}`
|
||||
|
||||
r, _ := NewLexical(jsonData).Parse(jsonData)
|
||||
for _, val := range r {
|
||||
fmt.Print(val.Val)
|
||||
|
Loading…
Reference in New Issue
Block a user