aboutsummaryrefslogtreecommitdiff
path: root/docs/jsonloader.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/jsonloader.md')
-rw-r--r--docs/jsonloader.md24
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