Forráskód Böngészése

check json-format

libf 4 hónapja
szülő
commit
90e5aac933
1 módosított fájl, 13 hozzáadás és 4 törlés
  1. 13 4
      reader/txtreader.go

+ 13 - 4
reader/txtreader.go

@@ -2,10 +2,12 @@ package reader
 
 import (
 	"encoding/json"
+	"fmt"
 	"io"
 	"regexp"
 
 	"git.wecise.com/wecise/cgimport/schema"
+	"git.wecise.com/wecise/util/logger"
 )
 
 type TXTBlockReader struct {
@@ -22,7 +24,8 @@ func NewTXTBlockReader(filename string, filetype schema.FileType, reader io.Read
 	}
 }
 
-var regrecord = regexp.MustCompile(`^(?:[\.\/a-zA-Z0-9_]*:)?V:(\{.*)`)
+var regrecordstart = regexp.MustCompile(`^(?:[\.\/a-zA-Z0-9_]*:)?V:(\{.*)`)
+var regrecordend = regexp.MustCompile(`\}\s*$`)
 
 func (br *TXTBlockReader) ReadBlock() (block map[string]any, line string, linecount int, err error) {
 	eof := false
@@ -39,20 +42,26 @@ func (br *TXTBlockReader) ReadBlock() (block map[string]any, line string, lineco
 				}
 				break
 			}
-			if regrecord.MatchString(br.nextline) {
+			if regrecordend.MatchString(line) {
+				break
+			}
+			if regrecordstart.MatchString(br.nextline) {
 				break
 			}
 			line += br.nextline
 		}
 		linecount--
-		if !regrecord.MatchString(line) {
+		if !regrecordstart.MatchString(line) || !regrecordend.MatchString(line) {
+			if line != "" {
+				logger.Info(fmt.Sprint("skip non-json line ", br.filename, ":", linecount, " ", line))
+			}
 			if linecount == 1 {
 				br.firstline = line
 			}
 			line = br.nextline
 			continue
 		}
-		line = regrecord.ReplaceAllString(line, "$1")
+		line = regrecordstart.ReplaceAllString(line, "$1")
 		block = map[string]any{}
 		err = json.Unmarshal([]byte(line), &block)
 		if err != nil {