JSON FILE TEXT READ: { "null_value" : "null", "boolean_true" : false, "boolean_false" : true, "string" : "this is my string.", "integer_number" : 3.14159, "number_examples" : { "positive integer" : 9, "negative integer" : -1, "float" : 2.3, "positive_exponent" : 435E56, "negative_exponent" : 435.08E-95, "not a number" : "NaN" }, "array" : [true,null,["value3"],{"key4":"value5"}] } JSON FILE TEXT AFTER REPLACING ,null, WITH ,"null",: { "null_value" : "null", "boolean_true" : false, "boolean_false" : true, "string" : "this is my string.", "integer_number" : 3.14159, "number_examples" : { "positive integer" : 9, "negative integer" : -1, "float" : 2.3, "positive_exponent" : 435E56, "negative_exponent" : 435.08E-95, "not a number" : "NaN" }, "array" : [true,"null",["value3"],{"key4":"value5"}] } The JSON parse succeeded. FORMATTED HASHED JSON DATA: array => True null value3 key4 value5 boolean_false => True boolean_true => False integer_number => 3.14159 null_value => null number_examples => positive integer 9 negative integer -1 float 2.3 positive_exponent 4.35e+58 negative_exponent 4.3508e-93 not a number NaN string => this is my string. There is no documentation for JSON::Tiny, I don't know what to use for a JSON NULL or None value. FORMATTED HASHED JSON DATA AFTER CHANGING null_value FROM null TO NULL: array => True null value3 key4 value5 boolean_false => True boolean_true => False integer_number => 3.14159 null_value => NULL number_examples => positive integer 9 negative integer -1 float 2.3 positive_exponent 4.35e+58 negative_exponent 4.3508e-93 not a number NaN string => this is my string. FORMATTED HASHED JSON DATA AFTER CHANGING boolean_true FROM False TO True: array => True null value3 key4 value5 boolean_false => True boolean_true => True integer_number => 3.14159 null_value => NULL number_examples => positive integer 9 negative integer -1 float 2.3 positive_exponent 4.35e+58 negative_exponent 4.3508e-93 not a number NaN string => this is my string. FORMATTED HASHED JSON DATA AFTER CHANGING boolean_false FROM True TO False: array => True null value3 key4 value5 boolean_false => False boolean_true => True integer_number => 3.14159 null_value => NULL number_examples => positive integer 9 negative integer -1 float 2.3 positive_exponent 4.35e+58 negative_exponent 4.3508e-93 not a number NaN string => this is my string. FORMATTED HASHED JSON DATA AFTER CHANGING integer_number FROM 3.14159 TO 3: array => True null value3 key4 value5 boolean_false => False boolean_true => True integer_number => 3 null_value => NULL number_examples => positive integer 9 negative integer -1 float 2.3 positive_exponent 4.35e+58 negative_exponent 4.3508e-93 not a number NaN string => this is my string. FORMATTED HASHED JSON DATA AFTER DELETING number_examples -> "not a number": array => True null value3 key4 value5 boolean_false => False boolean_true => True integer_number => 3 null_value => NULL number_examples => positive integer 9 negative integer -1 float 2.3 positive_exponent 4.35e+58 negative_exponent 4.3508e-93 string => this is my string. I cheated by not searching array for the index of the hash and instead just used 3 as the index of the hash. FORMATTED HASHED JSON DATA AFTER CHANGING value5 TO value4: array => True null value3 key4 value4 boolean_false => False boolean_true => True integer_number => 3 null_value => NULL number_examples => positive integer 9 negative integer -1 float 2.3 positive_exponent 4.35e+58 negative_exponent 4.3508e-93 string => this is my string. JSON DATA IS NOW: { "null_value" : "NULL", "boolean_true" : true, "boolean_false" : false, "string" : "this is my string.", "integer_number" : 3, "number_examples" : { "positive integer" : 9, "negative integer" : -1, "float" : 2.3, "positive_exponent" : 4.35e+58, "negative_exponent" : 4.3508e-93 }, "array" : [ true, "null", [ "value3" ], { "key4" : "value4" } ] }