diff options
Diffstat (limited to 'docs/jsonloader.md')
-rw-r--r-- | docs/jsonloader.md | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/docs/jsonloader.md b/docs/jsonloader.md new file mode 100644 index 0000000..047c4b7 --- /dev/null +++ b/docs/jsonloader.md @@ -0,0 +1,24 @@ +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.
\ No newline at end of file |