Fix minor errors in spec, add JSON specification.
diff --git a/specification/json/sections/cper-memory.json b/specification/json/sections/cper-memory.json
new file mode 100644
index 0000000..d4686b1
--- /dev/null
+++ b/specification/json/sections/cper-memory.json
@@ -0,0 +1,163 @@
+{
+    "$id": "cper-json-memory-section",
+    "$schema": "https://json-schema.org/draft/2020-12/schema",
+    "type": "object",
+    "required": ["validationBits", "errorStatus", "bank", "memoryErrorType", "extended", "physicalAddress", "physicalAddressMask", "node", "card", "moduleRank", "device", "row", "column", "bitPosition", "requestorID", "responderID", "targetID", "rankNumber", "cardSmbiosHandle", "moduleSmbiosHandle"],
+    "additionalProperties": false,
+    "properties": {
+        "validationBits": {
+            "type": "object",
+            "required": ["errorStatusValid", "physicalAddressValid", "physicalAddressMaskValid", "nodeValid", "cardValid", "moduleValid", "bankValid", "deviceValid", "rowValid", "memoryPlatformTargetValid", "memoryErrorTypeValid", "rankNumberValid", "cardHandleValid", "moduleHandleValid", "extendedRowBitsValid", "bankGroupValid", "bankAddressValid", "chipIdentificationValid"],
+            "properties": {
+                "errorStatusValid": {
+                    "type": "boolean"
+                },
+                "physicalAddressValid": {
+                    "type": "boolean"
+                },
+                "physicalAddressMaskValid": {
+                    "type": "boolean"
+                },
+                "nodeValid": {
+                    "type": "boolean"
+                },
+                "cardValid": {
+                    "type": "boolean"
+                },
+                "moduleValid": {
+                    "type": "boolean"
+                },
+                "bankValid": {
+                    "type": "boolean"
+                },
+                "deviceValid": {
+                    "type": "boolean"
+                },
+                "rowValid": {
+                    "type": "boolean"
+                },
+                "memoryPlatformTargetValid": {
+                    "type": "boolean"
+                },
+                "memoryErrorTypeValid": {
+                    "type": "boolean"
+                },
+                "rankNumberValid": {
+                    "type": "boolean"
+                },
+                "cardHandleValid": {
+                    "type": "boolean"
+                },
+                "moduleHandleValid": {
+                    "type": "boolean"
+                },
+                "extendedRowBitsValid": {
+                    "type": "boolean"
+                },
+                "bankGroupValid": {
+                    "type": "boolean"
+                },
+                "bankAddressValid": {
+                    "type": "boolean"
+                },
+                "chipIdentificationValid": {
+                    "type": "boolean"
+                }
+            }
+        },
+        "errorStatus": {
+            "type": "object",
+            "$ref": "../common/cper-json-error-status.json"
+        },
+        "bank": {
+            "type": "object",
+            "oneOf": [
+                {
+                    "type": "object",
+                    "required": ["value"],
+                    "properties": {
+                        "value": {
+                            "type": "integer"
+                        }
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["address", "group"],
+                    "properties": {
+                        "address": {
+                            "type": "integer"
+                        },
+                        "group": {
+                            "type": "integer"
+                        }
+                    }
+                }
+            ]
+        },
+        "memoryErrorType": {
+            "type": "object",
+            "$ref": "../common/cper-json-nvp.json"
+        },
+        "extended": {
+            "type": "object",
+            "required": ["rowBit16", "rowBit17", "chipIdentification"],
+            "properties": {
+                "rowBit16": {
+                    "type": "boolean"
+                },
+                "rowBit17": {
+                    "type": "boolean"
+                },
+                "chipIdentification": {
+                    "type": "integer"
+                }
+            }
+        },
+        "physicalAddress": {
+            "type": "integer"
+        },
+        "physicalAddressMask": {
+            "type": "integer"
+        },
+        "node": {
+            "type": "integer"
+        },
+        "card": {
+            "type": "integer"
+        },
+        "moduleRank": {
+            "type": "integer"
+        },
+        "device": {
+            "type": "integer"
+        },
+        "row": {
+            "type": "integer"
+        },
+        "column": {
+            "type": "integer"
+        },
+        "bitPosition": {
+            "type": "integer"
+        },
+        "requestorID": {
+            "type": "integer"
+        },
+        "responderID": {
+            "type": "integer"
+        },
+        "targetID": {
+            "type": "integer"
+        },
+        "rankNumber": {
+            "type": "integer"
+        },
+        "cardSmbiosHandle": {
+            "type": "integer"
+        },
+        "moduleSmbiosHandle": {
+            "type": "integer"
+        }
+    }
+}
\ No newline at end of file