VValueSingle* VJSONValue::CreateVValue(bool differentiateObjects) const { VValueSingle* result = nil; switch (fType) { case JSON_true: result = new VBoolean(true); break; case JSON_false: result = new VBoolean(false); break; case JSON_string: result = new VString(fString); break; case JSON_number: result = new VReal(fNumber); break; case JSON_date: result = new VTime(); ((VTime*)result)->FromMilliseconds(fTimeStamp); break; case JSON_object: if (differentiateObjects) { result = new VString("\x01\x02\x03\x01"); result->SetNull(false); } else { result = new VString(); result->SetNull(true); } break; case JSON_array: if (differentiateObjects) { result = new VString("\x01\x02\x03\x02"); result->SetNull(false); } else { result = new VString(); result->SetNull(true); } break; default: result = new VString(); result->SetNull(true); break; } return result; }