github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/formats/spdxjson/encoder.go (about)

     1  package spdxjson
     2  
     3  import (
     4  	"encoding/json"
     5  	"io"
     6  
     7  	"github.com/spdx/tools-golang/convert"
     8  	"github.com/spdx/tools-golang/spdx/v2/v2_2"
     9  
    10  	"github.com/anchore/syft/syft/formats/common/spdxhelpers"
    11  	"github.com/anchore/syft/syft/sbom"
    12  )
    13  
    14  func encoder2_3(output io.Writer, s sbom.SBOM) error {
    15  	doc := spdxhelpers.ToFormatModel(s)
    16  	return encodeJSON(output, doc)
    17  }
    18  
    19  func encoder2_2(output io.Writer, s sbom.SBOM) error {
    20  	doc := spdxhelpers.ToFormatModel(s)
    21  
    22  	var out v2_2.Document
    23  	err := convert.Document(doc, &out)
    24  	if err != nil {
    25  		return err
    26  	}
    27  
    28  	return encodeJSON(output, out)
    29  }
    30  
    31  func encodeJSON(output io.Writer, doc interface{}) error {
    32  	enc := json.NewEncoder(output)
    33  	// prevent > and < from being escaped in the payload
    34  	enc.SetEscapeHTML(false)
    35  	enc.SetIndent("", " ")
    36  
    37  	return enc.Encode(doc)
    38  }