xref: /aosp_15_r20/external/spdx-tools/json/parser.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
1// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
2
3package spdx_json
4
5import (
6	"bytes"
7	"encoding/json"
8	"io"
9
10	"github.com/spdx/tools-golang/spdx/v2_2"
11	"github.com/spdx/tools-golang/spdx/v2_3"
12)
13
14// Load2_2 takes in an io.Reader and returns an SPDX document.
15func Load2_2(content io.Reader) (*v2_2.Document, error) {
16	// convert io.Reader to a slice of bytes and call the parser
17	buf := new(bytes.Buffer)
18	_, err := buf.ReadFrom(content)
19	if err != nil {
20		return nil, err
21	}
22
23	var doc v2_2.Document
24	err = json.Unmarshal(buf.Bytes(), &doc)
25	if err != nil {
26		return nil, err
27	}
28
29	return &doc, nil
30}
31
32// Load2_3 takes in an io.Reader and returns an SPDX document.
33func Load2_3(content io.Reader) (*v2_3.Document, error) {
34	// convert io.Reader to a slice of bytes and call the parser
35	buf := new(bytes.Buffer)
36	_, err := buf.ReadFrom(content)
37	if err != nil {
38		return nil, err
39	}
40
41	var doc v2_3.Document
42	err = json.Unmarshal(buf.Bytes(), &doc)
43	if err != nil {
44		return nil, err
45	}
46
47	return &doc, nil
48}
49