                 
             #endif
             
-            guard let jsonValue = JSON.Value(string: jsonString, JSONC.self)
+            guard let parsedJSONValue = JSON.Value(string: jsonString, JSONC.self)
                 else { XCTFail("JSON parsing failed"); return }
             
             print("Parsed JSON: \(jsonValue)\n")
+            
+            XCTAssert(jsonValue == parsedJSONValue, "\(jsonValue) == \(parsedJSONValue)")
         }
         
-        parseJSON(["Key": NSNull()], "{ \"Key\" : null }")
+        parseJSON(.Object(["Key": .Null]), "{ \"Key\" : null }")
         
-        parseJSON(["Key": "Value"], "{ \"Key\" : \"Value\" }")
+        parseJSON(.Object(["Key": .String("Value")]), "{ \"Key\" : \"Value\" }")
         
-        parseJSON(["Key": true], "{ \"Key\" : true }")
+        parseJSON(.Object(["Key": .Number(.Boolean(true))]), "{ \"Key\" : true }")
         
-        parseJSON(["Key": 10], "{ \"Key\" : 10 }")
+        parseJSON(.Object(["Key": .Number(.Integer(10))]), "{ \"Key\" : 10 }")
         
-        parseJSON(["Key": 1.01], "{ \"Key\" : 1.01 }")
+        parseJSON(.Object(["Key": .Number(.Double(1.01))]), "{ \"Key\" : 1.01 }")
         
-        parseJSON(["Key": ["Key2": "Value"]], "{ \"Key\" : { \"Key2\" : \"Value\" } }")
+        parseJSON(.Object(["Key": .Object(["Key2": .String("Value")])]), "{ \"Key\" : { \"Key2\" : \"Value\" } }")
         
-        parseJSON([true, false, 10, 10.10, "string", ["subarrayValue1", "subarrayValue2"], ["subobjectKey", "subobjectValue"]], "[ true, false, 10, 10.10, \"string\", [\"subarrayValue1\", \"subarrayValue2\"], {\"subobjectKey\" : \"subobjectValue\"} ]")
+        parseJSON(.Array([
+            .Number(.Boolean(true)),
+            .Number(.Boolean(false)),
+            .Number(.Integer(10)),
+            .Number(.Double(10.1)),
+            .String("string"),
+            .Array([.String("subarrayValue1"), .String("subarrayValue2")]),
+                .Object(["subobjectKey": .String("subobjectValue")])
+                ]), "[true, false, 10, 10.1, \"string\", [\"subarrayValue1\", \"subarrayValue2\"], {\"subobjectKey\" : \"subobjectValue\"} ]")
     }
     
     func testJSONWriting() {

import JSONC

class JSONTests: XCTestCase {
        
    func testJSONEncodable() {
        


    func testJSONParse() {
        
        func parseJSON(jsonValue: JSON.Value, _ jsonString: String) {
            
            #if os(OSX) || os(iOS)
                
