github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/azure/arm/parser/armjson/unmarshal.go (about) 1 package armjson 2 3 import ( 4 "bytes" 5 "io" 6 7 "github.com/khulnasoft-lab/defsec/pkg/types" 8 ) 9 10 type Unmarshaller interface { 11 UnmarshalJSONWithMetadata(node Node) error 12 } 13 14 type MetadataReceiver interface { 15 SetMetadata(m *types.Metadata) 16 } 17 18 func Unmarshal(data []byte, target interface{}, metadata *types.Metadata) error { 19 node, err := newParser(NewPeekReader(bytes.NewReader(data)), Position{1, 1}).parse(metadata) 20 if err != nil { 21 return err 22 } 23 if err := node.Decode(target); err != nil { 24 return err 25 } 26 27 return nil 28 } 29 30 func UnmarshalFromReader(r io.ReadSeeker, target interface{}, metadata *types.Metadata) error { 31 node, err := newParser(NewPeekReader(r), Position{1, 1}).parse(metadata) 32 if err != nil { 33 return err 34 } 35 if err := node.Decode(target); err != nil { 36 return err 37 } 38 39 return nil 40 }