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