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  }