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 }