github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/pkg/service/output-json.go (about) 1 package service 2 3 import ( 4 "encoding/json" 5 "regexp" 6 7 logUtils "github.com/easysoft/zendata/pkg/utils/log" 8 ) 9 10 func (s *OutputService) GenJson() { 11 //log.Print(vari.GlobalVars.DefData.Fields) 12 13 records := s.GenRecords() 14 15 s.PrintJsonHeader() 16 17 for i, record := range records { 18 bytes, err := json.MarshalIndent(record, "", "\t") 19 if err != nil { 20 logUtils.PrintTo("json marshal failed") 21 break 22 } 23 24 jsonStr := string(bytes) 25 26 regx := regexp.MustCompile(`(\n+)`) 27 jsonStr = "\t" + regx.ReplaceAllString(jsonStr, "${1}\t") 28 29 postStr := "\n" 30 if i < len(records)-1 { 31 postStr = "," + postStr 32 } 33 34 logUtils.PrintRecord(jsonStr + postStr) 35 } 36 37 s.PrintJsonFooter() 38 39 return 40 } 41 42 func (s *OutputService) PrintJsonHeader() { 43 logUtils.PrintRecord("[\n") 44 } 45 func (s *OutputService) PrintJsonFooter() { 46 logUtils.PrintRecord("]\n") 47 }