Skip to content

Latest commit

 

History

History
24 lines (12 loc) · 1.66 KB

jsonloader.md

File metadata and controls

24 lines (12 loc) · 1.66 KB

SPDX-License-Identifier: CC-BY-4.0

Working

A UnmarshallJSON function on the spdx.Document2_2 struct is defined so that when the JSON is unmarshalled in it the function is called and we can implement the process in a custom way . Then a new map[string]interface{} is deifined which temporarily holds the unmarshalled json . The map is then parsed into the spdx.Document2_2 using functions defined for it’s different sections .

JSON → map[string]interface{} → spdx.Document2_2

Some Key Points

  • The packages have a property "hasFiles" defined in the schema which is an array of the SPDX Identifiers of the files of that pacakge . The parses first parses all the files into the Unpackaged files map of the document and then when it parses the packages , it removes the respective files from the unpackaged files map and places it inside the files map of that package .

  • The snippets have a property "snippetFromFile" which has the SPDX identiifer of the file to which the snippet is related . Thus the snippets require the files to be parsed before them . Then the snippets are parsed one by one and inserted into the respective files using this property .

The json file loader in package jsonloader makes the following assumptions:

Order of appearance of the properties

  • The parser does not make any pre-assumptions based on the order in which the properties appear .

Annotations

  • The json spdx schema does not define the SPDX Identifier property for the annotation object . The parser assumes the spdx Identifier of the parent property of the currently being parsed annotation array to be the SPDX Identifer for all the annotation objects of that array.