├── .gitmodules ├── AnyJSON.podspec ├── AnyJSON.xcworkspace └── contents.xcworkspacedata ├── AnyJSON ├── AnyJSON.h └── AnyJSON.m ├── CLI ├── CLI.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── Prefix.pch └── main.m ├── Example ├── AnyJSON Example.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── AppDelegate.h ├── AppDelegate.m ├── Default-568h@2x.png ├── Info.plist ├── Prefix.pch ├── RootViewController.h ├── RootViewController.m ├── RootViewController.xib └── main.m ├── LICENSE.md └── README.md /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Example/Libraries/JSONKit"] 2 | path = Example/Libraries/JSONKit 3 | url = https://github.com/johnezang/JSONKit.git 4 | [submodule "Example/Libraries/YAJL"] 5 | path = Example/Libraries/YAJL 6 | url = https://github.com/gabriel/yajl-objc.git 7 | [submodule "Example/Libraries/SBJson"] 8 | path = Example/Libraries/SBJson 9 | url = https://github.com/stig/json-framework.git 10 | [submodule "Example/Libraries/NextiveJson"] 11 | path = Example/Libraries/NextiveJson 12 | url = https://github.com/nextive/NextiveJson.git 13 | -------------------------------------------------------------------------------- /AnyJSON.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'AnyJSON' 3 | s.version = '0.1.0' 4 | s.license = 'MIT' 5 | s.summary = 'Encode / Decode JSON by any means possible.' 6 | s.homepage = 'https://github.com/mattt/AnyJSON' 7 | s.authors = { 'Mattt' => 'mattt@me.com', 'Cédric Luthi' => 'cedric.luthi@gmail.com' } 8 | s.source = { git: 'https://github.com/mattt/AnyJSON.git', tag: s.version } 9 | s.source_files = 'AnyJSON' 10 | end 11 | -------------------------------------------------------------------------------- /AnyJSON.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 9 | 10 | 12 | 13 | 14 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AnyJSON/AnyJSON.h: -------------------------------------------------------------------------------- 1 | // AnyJSON.h 2 | // 3 | // Copyright (c) 2012 Mattt (https://mat.tt/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | /* 24 | * AnyJSON does not provide a public API, but instead implements the public API of 25 | * NSJSONSerialization using a third-party JSON framework when targeting platforms 26 | * without NSJSONSerialization (i.e. iOS < 5.0 and Mac OS X < 10.7). 27 | * 28 | * See the project README for more information. 29 | */ 30 | -------------------------------------------------------------------------------- /AnyJSON/AnyJSON.m: -------------------------------------------------------------------------------- 1 | // AnyJSON.h 2 | // 3 | // Copyright (c) 2012 Mattt (https://mat.tt/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import 25 | 26 | static void AnyJSONUnimplemented(id self, SEL _cmd) { 27 | NSString *reason = [NSString stringWithFormat:@"%@[%@ %@] is not implemented", class_isMetaClass(object_getClass(self)) ? @"+" : @"-", self, NSStringFromSelector(_cmd)]; 28 | [[NSException exceptionWithName:@"AnyJSONUnimplementedException" reason:reason userInfo:nil] raise]; 29 | } 30 | 31 | BOOL AnyJSONIsValidObject(id self, SEL _cmd, id object) { 32 | AnyJSONUnimplemented(self, _cmd); 33 | return NO; 34 | } 35 | 36 | NSData * AnyJSONEncodeData(id self, SEL _cmd, id object, NSJSONWritingOptions options, NSError **error) { 37 | if (!object) { 38 | return nil; 39 | } 40 | 41 | NSData *data = nil; 42 | 43 | SEL _JSONKitSelector = NSSelectorFromString(@"JSONDataWithOptions:error:"); 44 | 45 | SEL _YAJLSelector = NSSelectorFromString(@"yajl_JSONStringWithOptions:indentString:"); 46 | 47 | id _SBJsonWriterClass = NSClassFromString(@"SBJsonWriter"); 48 | SEL _SBJsonWriterSelector = NSSelectorFromString(@"dataWithObject:"); 49 | SEL _SBJsonWriterSetHumanReadableSelector = NSSelectorFromString(@"setHumanReadable:"); 50 | 51 | id _NXJsonSerializerClass = NSClassFromString(@"NXJsonSerializer"); 52 | SEL _NXJsonSerializerSelector = NSSelectorFromString(@"serialize:"); 53 | 54 | if (_JSONKitSelector && [object respondsToSelector:_JSONKitSelector]) { 55 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[object methodSignatureForSelector:_JSONKitSelector]]; 56 | invocation.target = object; 57 | invocation.selector = _JSONKitSelector; 58 | 59 | NSUInteger serializeOptionFlags = 0; 60 | if ((options & NSJSONWritingPrettyPrinted) == NSJSONWritingPrettyPrinted) { 61 | serializeOptionFlags = 1 << 0; // JKSerializeOptionPretty 62 | } 63 | [invocation setArgument:&serializeOptionFlags atIndex:2]; 64 | if (error != NULL) { 65 | [invocation setArgument:error atIndex:3]; 66 | } 67 | 68 | [invocation invoke]; 69 | [invocation getReturnValue:&data]; 70 | } else if (_SBJsonWriterClass && [_SBJsonWriterClass instancesRespondToSelector:_SBJsonWriterSelector]) { 71 | id writer = [[_SBJsonWriterClass alloc] init]; 72 | if ((options & NSJSONWritingPrettyPrinted) == NSJSONWritingPrettyPrinted && [writer respondsToSelector:_SBJsonWriterSetHumanReadableSelector]) { 73 | NSInvocation *humanReadableInvocation = [NSInvocation invocationWithMethodSignature:[writer methodSignatureForSelector:_SBJsonWriterSetHumanReadableSelector]]; 74 | humanReadableInvocation.target = writer; 75 | humanReadableInvocation.selector = _SBJsonWriterSetHumanReadableSelector; 76 | [humanReadableInvocation setArgument:&(BOOL){YES} atIndex:2]; 77 | [humanReadableInvocation invoke]; 78 | } 79 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[writer methodSignatureForSelector:_SBJsonWriterSelector]]; 80 | invocation.target = writer; 81 | invocation.selector = _SBJsonWriterSelector; 82 | 83 | [invocation setArgument:&object atIndex:2]; 84 | 85 | [invocation invoke]; 86 | [invocation getReturnValue:&data]; 87 | 88 | if (!data && error && [writer respondsToSelector:@selector(error)]) { 89 | id writerError = [writer performSelector:@selector(error)]; 90 | if ([writerError isKindOfClass:[NSError class]]) { 91 | *error = writerError; 92 | } else if ([writerError isKindOfClass:[NSString class]]) { 93 | *error = [NSError errorWithDomain:@"org.brautaset.SBJsonWriter.ErrorDomain" code:0 userInfo:@{NSLocalizedDescriptionKey : writerError}]; 94 | } 95 | } 96 | [writer release]; 97 | } else if (_YAJLSelector && [object respondsToSelector:_YAJLSelector]) { 98 | @try { 99 | NSString *JSONString = nil; 100 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[object methodSignatureForSelector:_YAJLSelector]]; 101 | invocation.target = object; 102 | invocation.selector = _YAJLSelector; 103 | 104 | NSUInteger genOptions = 0; 105 | if ((options & NSJSONWritingPrettyPrinted) == NSJSONWritingPrettyPrinted) { 106 | genOptions = 1 << 0; // YAJLGenOptionsBeautify 107 | } 108 | [invocation setArgument:&genOptions atIndex:2]; 109 | NSString *indent = @" "; 110 | [invocation setArgument:&indent atIndex:3]; 111 | 112 | [invocation invoke]; 113 | [invocation getReturnValue:&JSONString]; 114 | 115 | data = [JSONString dataUsingEncoding:NSUTF8StringEncoding]; 116 | } 117 | @catch (NSException *exception) { 118 | *error = [[[NSError alloc] initWithDomain:NSStringFromClass([exception class]) code:0 userInfo:[exception userInfo]] autorelease]; 119 | } 120 | } else if (_NXJsonSerializerClass && [_NXJsonSerializerClass respondsToSelector:_NXJsonSerializerSelector]) { 121 | NSString *JSONString = nil; 122 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[_NXJsonSerializerClass methodSignatureForSelector:_NXJsonSerializerSelector]]; 123 | invocation.target = _NXJsonSerializerClass; 124 | invocation.selector = _NXJsonSerializerSelector; 125 | 126 | [invocation setArgument:&object atIndex:2]; 127 | 128 | [invocation invoke]; 129 | [invocation getReturnValue:&JSONString]; 130 | data = [JSONString dataUsingEncoding:NSUTF8StringEncoding]; 131 | } else { 132 | NSDictionary *userInfo = [NSDictionary dictionaryWithObject:NSLocalizedString(@"Please add one of the following libraries to your project: JSONKit, SBJSON, YAJL or Nextive JSON", nil) forKey:NSLocalizedRecoverySuggestionErrorKey]; 133 | [[NSException exceptionWithName:NSInternalInconsistencyException reason:NSLocalizedString(@"No JSON generation functionality available", nil) userInfo:userInfo] raise]; 134 | } 135 | 136 | return data; 137 | } 138 | 139 | id AnyJSONDecodeData(id self, SEL _cmd, NSData *data, NSJSONReadingOptions options, NSError **error) { 140 | if (!data || [data length] == 0) { 141 | return nil; 142 | } 143 | 144 | id JSON = nil; 145 | 146 | SEL _JSONKitSelector = NSSelectorFromString(@"objectFromJSONDataWithParseOptions:error:"); 147 | SEL _JSONKitMutableContainersSelector = NSSelectorFromString(@"mutableObjectFromJSONDataWithParseOptions:error:"); 148 | 149 | SEL _YAJLSelector = NSSelectorFromString(@"yajl_JSONWithOptions:error:"); 150 | 151 | id _SBJSONParserClass = NSClassFromString(@"SBJsonParser"); 152 | SEL _SBJSONParserSelector = NSSelectorFromString(@"objectWithData:"); 153 | 154 | id _NXJsonParserClass = NSClassFromString(@"NXJsonParser"); 155 | SEL _NXJsonParserSelector = NSSelectorFromString(@"parseData:error:ignoreNulls:"); 156 | 157 | if (_JSONKitSelector && [data respondsToSelector:_JSONKitSelector]) { 158 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[data methodSignatureForSelector:_JSONKitSelector]]; 159 | invocation.target = data; 160 | invocation.selector = _JSONKitSelector; 161 | if ((options & NSJSONReadingMutableContainers) == NSJSONReadingMutableContainers && [data respondsToSelector:_JSONKitMutableContainersSelector]) { 162 | invocation.selector = _JSONKitMutableContainersSelector; 163 | } 164 | 165 | NSUInteger parseOptionFlags = 0; 166 | [invocation setArgument:&parseOptionFlags atIndex:2]; 167 | if (error != NULL) { 168 | [invocation setArgument:&error atIndex:3]; 169 | } 170 | 171 | [invocation invoke]; 172 | [invocation getReturnValue:&JSON]; 173 | } else if (_SBJSONParserClass && [_SBJSONParserClass instancesRespondToSelector:_SBJSONParserSelector]) { 174 | id parser = [[_SBJSONParserClass alloc] init]; 175 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[parser methodSignatureForSelector:_SBJSONParserSelector]]; 176 | invocation.target = parser; 177 | invocation.selector = _SBJSONParserSelector; 178 | 179 | [invocation setArgument:&data atIndex:2]; 180 | 181 | [invocation invoke]; 182 | [invocation getReturnValue:&JSON]; 183 | 184 | if (!JSON && error && [parser respondsToSelector:@selector(error)]) { 185 | id parserError = [parser performSelector:@selector(error)]; 186 | if ([parserError isKindOfClass:[NSError class]]) { 187 | *error = parserError; 188 | } else if ([parserError isKindOfClass:[NSString class]]) { 189 | *error = [NSError errorWithDomain:@"org.brautaset.SBJsonParser.ErrorDomain" code:0 userInfo:@{NSLocalizedDescriptionKey : parserError}]; 190 | } 191 | } 192 | [parser release]; 193 | } else if (_YAJLSelector && [data respondsToSelector:_YAJLSelector]) { 194 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[data methodSignatureForSelector:_YAJLSelector]]; 195 | invocation.target = data; 196 | invocation.selector = _YAJLSelector; 197 | 198 | NSUInteger yajlParserOptions = 0; 199 | [invocation setArgument:&yajlParserOptions atIndex:2]; 200 | if (error != NULL) { 201 | [invocation setArgument:&error atIndex:3]; 202 | } 203 | 204 | [invocation invoke]; 205 | [invocation getReturnValue:&JSON]; 206 | } else if (_NXJsonParserClass && [_NXJsonParserClass respondsToSelector:_NXJsonParserSelector]) { 207 | NSNumber *nullOption = [NSNumber numberWithBool:YES]; 208 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[_NXJsonParserClass methodSignatureForSelector:_NXJsonParserSelector]]; 209 | invocation.target = _NXJsonParserClass; 210 | invocation.selector = _NXJsonParserSelector; 211 | 212 | [invocation setArgument:&data atIndex:2]; 213 | if (error != NULL) { 214 | [invocation setArgument:&error atIndex:3]; 215 | } 216 | [invocation setArgument:&nullOption atIndex:4]; 217 | 218 | [invocation invoke]; 219 | [invocation getReturnValue:&JSON]; 220 | } else { 221 | NSDictionary *userInfo = [NSDictionary dictionaryWithObject:NSLocalizedString(@"Please add one of the following libraries to your project: JSONKit, SBJSON, YAJL or Nextive JSON", nil) forKey:NSLocalizedRecoverySuggestionErrorKey]; 222 | [[NSException exceptionWithName:NSInternalInconsistencyException reason:NSLocalizedString(@"No JSON parsing functionality available", nil) userInfo:userInfo] raise]; 223 | } 224 | 225 | return JSON; 226 | } 227 | 228 | NSInteger AnyJSONEncodeStream(id self, SEL _cmd, id object, NSOutputStream *stream, NSJSONWritingOptions options, NSError **error) { 229 | AnyJSONUnimplemented(self, _cmd); 230 | return 0; 231 | } 232 | 233 | id AnyJSONDecodeStream(id self, SEL _cmd, NSInputStream *stream, NSJSONReadingOptions options, NSError **error) { 234 | AnyJSONUnimplemented(self, _cmd); 235 | return nil; 236 | } 237 | 238 | @protocol AnyJSONSerialization 239 | @required 240 | + (BOOL)isValidJSONObject:(id)obj; 241 | + (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error; 242 | + (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error; 243 | + (NSInteger)writeJSONObject:(id)obj toStream:(NSOutputStream *)stream options:(NSJSONWritingOptions)opt error:(NSError **)error; 244 | + (id)JSONObjectWithStream:(NSInputStream *)stream options:(NSJSONReadingOptions)opt error:(NSError **)error; 245 | @end 246 | 247 | __attribute__((constructor)) void AnyJSONInitialize(void) { 248 | Class NSJSONSerializationClass = objc_allocateClassPair(objc_getClass("NSObject"), "NSJSONSerialization", 0); 249 | if (!NSJSONSerializationClass) { 250 | return; 251 | } 252 | 253 | Class NSJSONSerializationMetaClass = object_getClass(NSJSONSerializationClass); 254 | class_addMethod(NSJSONSerializationMetaClass, @selector(isValidJSONObject:), (IMP)AnyJSONIsValidObject, protocol_getMethodDescription(@protocol(AnyJSONSerialization), @selector(isValidJSONObject:), YES, NO).types); 255 | class_addMethod(NSJSONSerializationMetaClass, @selector(dataWithJSONObject:options:error:), (IMP)AnyJSONEncodeData, protocol_getMethodDescription(@protocol(AnyJSONSerialization), @selector(dataWithJSONObject:options:error:), YES, NO).types); 256 | class_addMethod(NSJSONSerializationMetaClass, @selector(JSONObjectWithData:options:error:), (IMP)AnyJSONDecodeData, protocol_getMethodDescription(@protocol(AnyJSONSerialization), @selector(JSONObjectWithData:options:error:), YES, NO).types); 257 | class_addMethod(NSJSONSerializationMetaClass, @selector(writeJSONObject:toStream:options:error:), (IMP)AnyJSONEncodeStream, protocol_getMethodDescription(@protocol(AnyJSONSerialization), @selector(writeJSONObject:toStream:options:error:), YES, NO).types); 258 | class_addMethod(NSJSONSerializationMetaClass, @selector(JSONObjectWithStream:options:error:), (IMP)AnyJSONDecodeStream, protocol_getMethodDescription(@protocol(AnyJSONSerialization), @selector(JSONObjectWithStream:options:error:), YES, NO).types); 259 | objc_registerClassPair(NSJSONSerializationClass); 260 | 261 | Class *NSJSONSerializationClassRef = NULL; 262 | #if TARGET_CPU_ARM 263 | asm( 264 | "movw %0, :lower16:(L_OBJC_CLASS_NSJSONSerialization-(LPC0+4))\n" 265 | "movt %0, :upper16:(L_OBJC_CLASS_NSJSONSerialization-(LPC0+4))\n" 266 | "LPC0: add %0, pc" : "=r"(NSJSONSerializationClassRef) 267 | ); 268 | #elif TARGET_CPU_X86_64 269 | asm("leaq L_OBJC_CLASS_NSJSONSerialization(%%rip), %0" : "=r"(NSJSONSerializationClassRef)); 270 | #elif TARGET_CPU_X86 271 | asm("movl $L_OBJC_CLASS_NSJSONSerialization, %0" : "=r"(NSJSONSerializationClassRef)); 272 | #else 273 | #error Unsupported CPU 274 | #endif 275 | if (NSJSONSerializationClassRef) { 276 | *NSJSONSerializationClassRef = NSJSONSerializationClass; 277 | } 278 | } 279 | 280 | asm( 281 | #if __OBJC2__ 282 | ".section __DATA,__objc_classrefs,regular,no_dead_strip\n" 283 | #if TARGET_RT_64_BIT 284 | ".align 3\n" 285 | "L_OBJC_CLASS_NSJSONSerialization:\n" 286 | ".quad _OBJC_CLASS_$_NSJSONSerialization\n" 287 | #else 288 | ".align 2\n" 289 | "L_OBJC_CLASS_NSJSONSerialization:\n" 290 | ".long _OBJC_CLASS_$_NSJSONSerialization\n" 291 | #endif 292 | #else 293 | ".section __TEXT,__cstring,cstring_literals\n" 294 | "L_OBJC_CLASS_NAME_NSJSONSerialization:\n" 295 | ".asciz \"NSJSONSerialization\"\n" 296 | ".section __OBJC,__cls_refs,literal_pointers,no_dead_strip\n" 297 | ".align 2\n" 298 | "L_OBJC_CLASS_NSJSONSerialization:\n" 299 | ".long L_OBJC_CLASS_NAME_NSJSONSerialization\n" 300 | #endif 301 | ".weak_reference _OBJC_CLASS_$_NSJSONSerialization\n" 302 | ); 303 | 304 | // Dummy category ensures AnyJSON functions are not stripped if the -ObjC linker flag is used. 305 | @implementation NSObject (AnyJSON) @end 306 | -------------------------------------------------------------------------------- /CLI/CLI.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | C218F24916792C21008B57BA /* AnyJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = C218F24716792C16008B57BA /* AnyJSON.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 11 | F8D31CE2167577D000AFB571 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8D31CE1167577D000AFB571 /* Foundation.framework */; }; 12 | F8D31CE5167577D000AFB571 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D31CE4167577D000AFB571 /* main.m */; }; 13 | /* End PBXBuildFile section */ 14 | 15 | /* Begin PBXCopyFilesBuildPhase section */ 16 | F8D31CDB167577D000AFB571 /* CopyFiles */ = { 17 | isa = PBXCopyFilesBuildPhase; 18 | buildActionMask = 2147483647; 19 | dstPath = /usr/share/man/man1/; 20 | dstSubfolderSpec = 0; 21 | files = ( 22 | ); 23 | runOnlyForDeploymentPostprocessing = 1; 24 | }; 25 | /* End PBXCopyFilesBuildPhase section */ 26 | 27 | /* Begin PBXFileReference section */ 28 | C218F24616792C16008B57BA /* AnyJSON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnyJSON.h; sourceTree = ""; }; 29 | C218F24716792C16008B57BA /* AnyJSON.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnyJSON.m; sourceTree = ""; }; 30 | F8D31CDD167577D000AFB571 /* anyjson */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = anyjson; sourceTree = BUILT_PRODUCTS_DIR; }; 31 | F8D31CE1167577D000AFB571 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 32 | F8D31CE4167577D000AFB571 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 33 | F8D31CF41675785800AFB571 /* Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = ""; }; 34 | /* End PBXFileReference section */ 35 | 36 | /* Begin PBXFrameworksBuildPhase section */ 37 | F8D31CDA167577D000AFB571 /* Frameworks */ = { 38 | isa = PBXFrameworksBuildPhase; 39 | buildActionMask = 2147483647; 40 | files = ( 41 | F8D31CE2167577D000AFB571 /* Foundation.framework in Frameworks */, 42 | ); 43 | runOnlyForDeploymentPostprocessing = 0; 44 | }; 45 | /* End PBXFrameworksBuildPhase section */ 46 | 47 | /* Begin PBXGroup section */ 48 | C218F24516792C16008B57BA /* AnyJSON */ = { 49 | isa = PBXGroup; 50 | children = ( 51 | C218F24616792C16008B57BA /* AnyJSON.h */, 52 | C218F24716792C16008B57BA /* AnyJSON.m */, 53 | ); 54 | name = AnyJSON; 55 | path = ../AnyJSON; 56 | sourceTree = ""; 57 | }; 58 | F8D31CD2167577D000AFB571 = { 59 | isa = PBXGroup; 60 | children = ( 61 | C218F24516792C16008B57BA /* AnyJSON */, 62 | F8D31CE3167577D000AFB571 /* CLI */, 63 | F8D31CE0167577D000AFB571 /* Frameworks */, 64 | F8D31CDE167577D000AFB571 /* Products */, 65 | ); 66 | sourceTree = ""; 67 | }; 68 | F8D31CDE167577D000AFB571 /* Products */ = { 69 | isa = PBXGroup; 70 | children = ( 71 | F8D31CDD167577D000AFB571 /* anyjson */, 72 | ); 73 | name = Products; 74 | sourceTree = ""; 75 | }; 76 | F8D31CE0167577D000AFB571 /* Frameworks */ = { 77 | isa = PBXGroup; 78 | children = ( 79 | F8D31CE1167577D000AFB571 /* Foundation.framework */, 80 | ); 81 | name = Frameworks; 82 | sourceTree = ""; 83 | }; 84 | F8D31CE3167577D000AFB571 /* CLI */ = { 85 | isa = PBXGroup; 86 | children = ( 87 | F8D31CE4167577D000AFB571 /* main.m */, 88 | F8D31CE6167577D000AFB571 /* Supporting Files */, 89 | ); 90 | name = CLI; 91 | sourceTree = ""; 92 | }; 93 | F8D31CE6167577D000AFB571 /* Supporting Files */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | F8D31CF41675785800AFB571 /* Prefix.pch */, 97 | ); 98 | name = "Supporting Files"; 99 | sourceTree = ""; 100 | }; 101 | /* End PBXGroup section */ 102 | 103 | /* Begin PBXNativeTarget section */ 104 | F8D31CDC167577D000AFB571 /* anyjson */ = { 105 | isa = PBXNativeTarget; 106 | buildConfigurationList = F8D31CEC167577D000AFB571 /* Build configuration list for PBXNativeTarget "anyjson" */; 107 | buildPhases = ( 108 | F8D31CD9167577D000AFB571 /* Sources */, 109 | F8D31CDA167577D000AFB571 /* Frameworks */, 110 | F8D31CDB167577D000AFB571 /* CopyFiles */, 111 | ); 112 | buildRules = ( 113 | ); 114 | dependencies = ( 115 | ); 116 | name = anyjson; 117 | productName = CLI; 118 | productReference = F8D31CDD167577D000AFB571 /* anyjson */; 119 | productType = "com.apple.product-type.tool"; 120 | }; 121 | /* End PBXNativeTarget section */ 122 | 123 | /* Begin PBXProject section */ 124 | F8D31CD4167577D000AFB571 /* Project object */ = { 125 | isa = PBXProject; 126 | attributes = { 127 | LastUpgradeCheck = 0450; 128 | ORGANIZATIONNAME = "Mattt"; 129 | }; 130 | buildConfigurationList = F8D31CD7167577D000AFB571 /* Build configuration list for PBXProject "CLI" */; 131 | compatibilityVersion = "Xcode 3.2"; 132 | developmentRegion = English; 133 | hasScannedForEncodings = 0; 134 | knownRegions = ( 135 | en, 136 | ); 137 | mainGroup = F8D31CD2167577D000AFB571; 138 | productRefGroup = F8D31CDE167577D000AFB571 /* Products */; 139 | projectDirPath = ""; 140 | projectRoot = ""; 141 | targets = ( 142 | F8D31CDC167577D000AFB571 /* anyjson */, 143 | ); 144 | }; 145 | /* End PBXProject section */ 146 | 147 | /* Begin PBXSourcesBuildPhase section */ 148 | F8D31CD9167577D000AFB571 /* Sources */ = { 149 | isa = PBXSourcesBuildPhase; 150 | buildActionMask = 2147483647; 151 | files = ( 152 | F8D31CE5167577D000AFB571 /* main.m in Sources */, 153 | C218F24916792C21008B57BA /* AnyJSON.m in Sources */, 154 | ); 155 | runOnlyForDeploymentPostprocessing = 0; 156 | }; 157 | /* End PBXSourcesBuildPhase section */ 158 | 159 | /* Begin XCBuildConfiguration section */ 160 | F8D31CEA167577D000AFB571 /* Debug */ = { 161 | isa = XCBuildConfiguration; 162 | buildSettings = { 163 | ALWAYS_SEARCH_USER_PATHS = NO; 164 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 165 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 166 | CLANG_CXX_LIBRARY = "libc++"; 167 | CLANG_ENABLE_OBJC_ARC = YES; 168 | CLANG_WARN_EMPTY_BODY = YES; 169 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 170 | COPY_PHASE_STRIP = NO; 171 | GCC_C_LANGUAGE_STANDARD = gnu99; 172 | GCC_DYNAMIC_NO_PIC = NO; 173 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 174 | GCC_OPTIMIZATION_LEVEL = 0; 175 | GCC_PREPROCESSOR_DEFINITIONS = ( 176 | "DEBUG=1", 177 | "$(inherited)", 178 | ); 179 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 180 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 181 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 182 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 183 | GCC_WARN_UNUSED_VARIABLE = YES; 184 | MACOSX_DEPLOYMENT_TARGET = 10.8; 185 | ONLY_ACTIVE_ARCH = YES; 186 | SDKROOT = macosx; 187 | }; 188 | name = Debug; 189 | }; 190 | F8D31CEB167577D000AFB571 /* Release */ = { 191 | isa = XCBuildConfiguration; 192 | buildSettings = { 193 | ALWAYS_SEARCH_USER_PATHS = NO; 194 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 195 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 196 | CLANG_CXX_LIBRARY = "libc++"; 197 | CLANG_ENABLE_OBJC_ARC = YES; 198 | CLANG_WARN_EMPTY_BODY = YES; 199 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 200 | COPY_PHASE_STRIP = YES; 201 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 202 | GCC_C_LANGUAGE_STANDARD = gnu99; 203 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 204 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 205 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 206 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 207 | GCC_WARN_UNUSED_VARIABLE = YES; 208 | MACOSX_DEPLOYMENT_TARGET = 10.8; 209 | SDKROOT = macosx; 210 | }; 211 | name = Release; 212 | }; 213 | F8D31CED167577D000AFB571 /* Debug */ = { 214 | isa = XCBuildConfiguration; 215 | buildSettings = { 216 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 217 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 218 | GCC_PREFIX_HEADER = Prefix.pch; 219 | PRODUCT_NAME = "$(TARGET_NAME)"; 220 | }; 221 | name = Debug; 222 | }; 223 | F8D31CEE167577D000AFB571 /* Release */ = { 224 | isa = XCBuildConfiguration; 225 | buildSettings = { 226 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 227 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 228 | GCC_PREFIX_HEADER = Prefix.pch; 229 | PRODUCT_NAME = "$(TARGET_NAME)"; 230 | }; 231 | name = Release; 232 | }; 233 | /* End XCBuildConfiguration section */ 234 | 235 | /* Begin XCConfigurationList section */ 236 | F8D31CD7167577D000AFB571 /* Build configuration list for PBXProject "CLI" */ = { 237 | isa = XCConfigurationList; 238 | buildConfigurations = ( 239 | F8D31CEA167577D000AFB571 /* Debug */, 240 | F8D31CEB167577D000AFB571 /* Release */, 241 | ); 242 | defaultConfigurationIsVisible = 0; 243 | defaultConfigurationName = Release; 244 | }; 245 | F8D31CEC167577D000AFB571 /* Build configuration list for PBXNativeTarget "anyjson" */ = { 246 | isa = XCConfigurationList; 247 | buildConfigurations = ( 248 | F8D31CED167577D000AFB571 /* Debug */, 249 | F8D31CEE167577D000AFB571 /* Release */, 250 | ); 251 | defaultConfigurationIsVisible = 0; 252 | defaultConfigurationName = Release; 253 | }; 254 | /* End XCConfigurationList section */ 255 | }; 256 | rootObject = F8D31CD4167577D000AFB571 /* Project object */; 257 | } 258 | -------------------------------------------------------------------------------- /CLI/CLI.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CLI/Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'CLI' target in the 'CLI' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /CLI/main.m: -------------------------------------------------------------------------------- 1 | // anyjson.m 2 | // 3 | // Copyright (c) 2012 Cédric Luthi (https://twitter.com/0xced) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import 25 | 26 | void ExitWithError(NSString *message, id error) { 27 | NSDictionary *environment = [[NSProcessInfo processInfo] environment]; 28 | BOOL term = [environment objectForKey:@"TERM"] != nil; 29 | BOOL xcodeColors = [[environment objectForKey:@"XcodeColors"] boolValue]; 30 | NSString *userInfo = [error isKindOfClass:[NSError class]] ? [@"\n" stringByAppendingString:[[error userInfo] description]] : @""; 31 | NSLog(term || xcodeColors ? @"\e[1;31m%@:\e[m %@%@" : @"%@: %@%@", message, [error description], userInfo); 32 | exit(EXIT_FAILURE); 33 | } 34 | 35 | void LoadDylib(NSString *dylibPath) { 36 | if (!dylibPath) { 37 | return; 38 | } 39 | 40 | NSBundle *dylibBundle = [NSBundle bundleWithPath:dylibPath]; 41 | if (dylibBundle) { 42 | NSError *loadError = nil; 43 | BOOL loaded = [dylibBundle loadAndReturnError:&loadError]; 44 | if (!loaded) { 45 | ExitWithError(@"Load Error", loadError); 46 | } 47 | } else { 48 | void *dylibHandle = dlopen([dylibPath fileSystemRepresentation], RTLD_LAZY); 49 | if (dylibPath && !dylibHandle) { 50 | ExitWithError(@"Load Error", @(dlerror())); 51 | } 52 | } 53 | } 54 | 55 | NSData * JSONRoundTrip(NSData *inputData, NSJSONReadingOptions readingOptions, NSJSONWritingOptions writingOptions) { 56 | NSError *readingError = nil; 57 | id object = [NSJSONSerialization JSONObjectWithData:inputData options:readingOptions error:&readingError]; 58 | if (!object) { 59 | ExitWithError(@"Reading Error", readingError); 60 | } 61 | 62 | NSError *writingError = nil; 63 | NSData *outputData = [NSJSONSerialization dataWithJSONObject:object options:writingOptions error:&writingError]; 64 | if (!outputData) { 65 | ExitWithError(@"Writing Error", writingError); 66 | } 67 | 68 | return outputData; 69 | } 70 | 71 | int main(int argc, const char * argv[]) { 72 | @autoreleasepool { 73 | if (argc < 2) { 74 | NSLog(@"Usage: %@ [-dylib dylib_path] [-readingOptions reading_options] [-writingOptions writing_options] JSON_string", [@(argv[0]) lastPathComponent]); 75 | return EXIT_FAILURE; 76 | } 77 | @try { 78 | LoadDylib([[NSUserDefaults standardUserDefaults] objectForKey:@"dylib"]); 79 | 80 | NSString *readingOptions = [[NSUserDefaults standardUserDefaults] objectForKey:@"readingOptions"]; 81 | NSString *writingOptions = [[NSUserDefaults standardUserDefaults] objectForKey:@"writingOptions"]; 82 | 83 | NSData *inputData = [@(argv[argc - 1]) dataUsingEncoding:NSUTF8StringEncoding]; 84 | NSData *outputData = JSONRoundTrip(inputData, [readingOptions integerValue], [writingOptions integerValue]); 85 | NSLog(@"%@", [[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding]); 86 | } 87 | @catch (NSException *exception) { 88 | ExitWithError(@"Exception", exception); 89 | } 90 | } 91 | 92 | return EXIT_SUCCESS; 93 | } 94 | -------------------------------------------------------------------------------- /Example/AnyJSON Example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | C20BA5D616591397009CDED0 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D516591397009CDED0 /* UIKit.framework */; }; 11 | C20BA5D816591397009CDED0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D716591397009CDED0 /* Foundation.framework */; }; 12 | C20BA5DA16591397009CDED0 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D916591397009CDED0 /* CoreGraphics.framework */; }; 13 | C20BA5E216591397009CDED0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E116591397009CDED0 /* main.m */; }; 14 | C20BA5E616591397009CDED0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E516591397009CDED0 /* AppDelegate.m */; }; 15 | C20BA5EF16591398009CDED0 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5EE16591398009CDED0 /* RootViewController.m */; }; 16 | C20BA60116591451009CDED0 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C20BA60016591451009CDED0 /* RootViewController.xib */; }; 17 | C21E2A49166E9CEB00F1E521 /* NSError+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = C29752A01660159200C734D3 /* NSError+Extensions.m */; }; 18 | C21E2A4A166E9CED00F1E521 /* NXDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = C29752A21660159200C734D3 /* NXDebug.m */; }; 19 | C21E2A4B166E9CEF00F1E521 /* NXJsonParser.m in Sources */ = {isa = PBXBuildFile; fileRef = C29752A41660159200C734D3 /* NXJsonParser.m */; }; 20 | C21E2A4C166E9CF200F1E521 /* NXJsonSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = C29752A61660159200C734D3 /* NXJsonSerializer.m */; }; 21 | C21E2A59166EA2E300F1E521 /* JSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = C297520C1660126900C734D3 /* JSONKit.m */; }; 22 | C297520F1660126900C734D3 /* JSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = C297520C1660126900C734D3 /* JSONKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 23 | C29752131660129500C734D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E116591397009CDED0 /* main.m */; }; 24 | C29752141660129500C734D3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E516591397009CDED0 /* AppDelegate.m */; }; 25 | C29752151660129500C734D3 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5EE16591398009CDED0 /* RootViewController.m */; }; 26 | C29752161660129500C734D3 /* AnyJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA602165915D3009CDED0 /* AnyJSON.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 27 | C29752191660129500C734D3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D516591397009CDED0 /* UIKit.framework */; }; 28 | C297521A1660129500C734D3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D716591397009CDED0 /* Foundation.framework */; }; 29 | C297521B1660129500C734D3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D916591397009CDED0 /* CoreGraphics.framework */; }; 30 | C297521D1660129500C734D3 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C20BA60016591451009CDED0 /* RootViewController.xib */; }; 31 | C2975277166014A700C734D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E116591397009CDED0 /* main.m */; }; 32 | C2975278166014A700C734D3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E516591397009CDED0 /* AppDelegate.m */; }; 33 | C2975279166014A700C734D3 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5EE16591398009CDED0 /* RootViewController.m */; }; 34 | C297527D166014A700C734D3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D516591397009CDED0 /* UIKit.framework */; }; 35 | C297527E166014A700C734D3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D716591397009CDED0 /* Foundation.framework */; }; 36 | C297527F166014A700C734D3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D916591397009CDED0 /* CoreGraphics.framework */; }; 37 | C2975281166014A700C734D3 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C20BA60016591451009CDED0 /* RootViewController.xib */; }; 38 | C297528B1660152200C734D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E116591397009CDED0 /* main.m */; }; 39 | C297528C1660152200C734D3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E516591397009CDED0 /* AppDelegate.m */; }; 40 | C297528D1660152200C734D3 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5EE16591398009CDED0 /* RootViewController.m */; }; 41 | C297528E1660152200C734D3 /* AnyJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA602165915D3009CDED0 /* AnyJSON.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 42 | C29752911660152200C734D3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D516591397009CDED0 /* UIKit.framework */; }; 43 | C29752921660152200C734D3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D716591397009CDED0 /* Foundation.framework */; }; 44 | C29752931660152200C734D3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D916591397009CDED0 /* CoreGraphics.framework */; }; 45 | C29752951660152200C734D3 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C20BA60016591451009CDED0 /* RootViewController.xib */; }; 46 | C29752AD1660159200C734D3 /* NSError+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = C29752A01660159200C734D3 /* NSError+Extensions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 47 | C29752AE1660159200C734D3 /* NXDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = C29752A21660159200C734D3 /* NXDebug.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 48 | C29752AF1660159200C734D3 /* NXJsonParser.m in Sources */ = {isa = PBXBuildFile; fileRef = C29752A41660159200C734D3 /* NXJsonParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 49 | C29752B01660159200C734D3 /* NXJsonSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = C29752A61660159200C734D3 /* NXJsonSerializer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 50 | C2E7397F166041670042CF6D /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2E7397E166041670042CF6D /* Default-568h@2x.png */; }; 51 | C2E73980166041670042CF6D /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2E7397E166041670042CF6D /* Default-568h@2x.png */; }; 52 | C2E73981166041670042CF6D /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2E7397E166041670042CF6D /* Default-568h@2x.png */; }; 53 | C2E73982166041670042CF6D /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2E7397E166041670042CF6D /* Default-568h@2x.png */; }; 54 | C2E739881660F6900042CF6D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D716591397009CDED0 /* Foundation.framework */; }; 55 | C2E739931660F6BF0042CF6D /* AnyJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA602165915D3009CDED0 /* AnyJSON.m */; }; 56 | C2E739951660FA1F0042CF6D /* AnyJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA602165915D3009CDED0 /* AnyJSON.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 57 | C2E739961660FA2D0042CF6D /* libAnyJSON.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C2E739871660F6900042CF6D /* libAnyJSON.a */; }; 58 | C2E739991661030B0042CF6D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E116591397009CDED0 /* main.m */; }; 59 | C2E7399A1661030B0042CF6D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5E516591397009CDED0 /* AppDelegate.m */; }; 60 | C2E7399B1661030B0042CF6D /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C20BA5EE16591398009CDED0 /* RootViewController.m */; }; 61 | C2E7399D1661030B0042CF6D /* JSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = C297520C1660126900C734D3 /* JSONKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 62 | C2E7399F1661030B0042CF6D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D516591397009CDED0 /* UIKit.framework */; }; 63 | C2E739A01661030B0042CF6D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D716591397009CDED0 /* Foundation.framework */; }; 64 | C2E739A11661030B0042CF6D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C20BA5D916591397009CDED0 /* CoreGraphics.framework */; }; 65 | C2E739A31661030B0042CF6D /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C20BA60016591451009CDED0 /* RootViewController.xib */; }; 66 | C2E739A41661030B0042CF6D /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2E7397E166041670042CF6D /* Default-568h@2x.png */; }; 67 | C2E739AB166103430042CF6D /* libAnyJSON.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C2E739871660F6900042CF6D /* libAnyJSON.a */; }; 68 | /* End PBXBuildFile section */ 69 | 70 | /* Begin PBXContainerItemProxy section */ 71 | F8BA3D39167581E200B99B93 /* PBXContainerItemProxy */ = { 72 | isa = PBXContainerItemProxy; 73 | containerPortal = C29752501660145700C734D3 /* SBJson.xcodeproj */; 74 | proxyType = 2; 75 | remoteGlobalIDString = BC12323D1391D5CC00131607; 76 | remoteInfo = SBJson; 77 | }; 78 | F8BA3D3B167581E200B99B93 /* PBXContainerItemProxy */ = { 79 | isa = PBXContainerItemProxy; 80 | containerPortal = C29752501660145700C734D3 /* SBJson.xcodeproj */; 81 | proxyType = 2; 82 | remoteGlobalIDString = BC1232521391D5CC00131607; 83 | remoteInfo = SBJsonTests; 84 | }; 85 | F8BA3D3D167581E200B99B93 /* PBXContainerItemProxy */ = { 86 | isa = PBXContainerItemProxy; 87 | containerPortal = C29752501660145700C734D3 /* SBJson.xcodeproj */; 88 | proxyType = 2; 89 | remoteGlobalIDString = BCC2626913920FC7003D9994; 90 | remoteInfo = "sbjson-ios"; 91 | }; 92 | F8BA3D3F167581E200B99B93 /* PBXContainerItemProxy */ = { 93 | isa = PBXContainerItemProxy; 94 | containerPortal = C29752501660145700C734D3 /* SBJson.xcodeproj */; 95 | proxyType = 2; 96 | remoteGlobalIDString = BCC2627313920FC7003D9994; 97 | remoteInfo = "sbjson-iosTests"; 98 | }; 99 | F8BA3D4B167581FE00B99B93 /* PBXContainerItemProxy */ = { 100 | isa = PBXContainerItemProxy; 101 | containerPortal = C297522C1660139A00C734D3 /* YAJLiOS.xcodeproj */; 102 | proxyType = 2; 103 | remoteGlobalIDString = 0065977C11BEEF4000E89ABD; 104 | remoteInfo = "YAJLiOS (Device)"; 105 | }; 106 | F8BA3D4D167581FE00B99B93 /* PBXContainerItemProxy */ = { 107 | isa = PBXContainerItemProxy; 108 | containerPortal = C297522C1660139A00C734D3 /* YAJLiOS.xcodeproj */; 109 | proxyType = 2; 110 | remoteGlobalIDString = 006597AC11BEEF4800E89ABD; 111 | remoteInfo = "YAJLiOS (Simulator)"; 112 | }; 113 | F8BA3D4F167581FE00B99B93 /* PBXContainerItemProxy */ = { 114 | isa = PBXContainerItemProxy; 115 | containerPortal = C297522C1660139A00C734D3 /* YAJLiOS.xcodeproj */; 116 | proxyType = 2; 117 | remoteGlobalIDString = 006597EA11BEEF5400E89ABD; 118 | remoteInfo = Tests; 119 | }; 120 | F8BA3D591675820600B99B93 /* PBXContainerItemProxy */ = { 121 | isa = PBXContainerItemProxy; 122 | containerPortal = C21E2A60166EA88400F1E521 /* YAJL.xcodeproj */; 123 | proxyType = 2; 124 | remoteGlobalIDString = 8DC2EF5B0486A6940098B216; 125 | remoteInfo = YAJL; 126 | }; 127 | F8BA3D5B1675820600B99B93 /* PBXContainerItemProxy */ = { 128 | isa = PBXContainerItemProxy; 129 | containerPortal = C21E2A60166EA88400F1E521 /* YAJL.xcodeproj */; 130 | proxyType = 2; 131 | remoteGlobalIDString = 00E5DDF80F5B6E3E00C11F1D; 132 | remoteInfo = Tests; 133 | }; 134 | /* End PBXContainerItemProxy section */ 135 | 136 | /* Begin PBXCopyFilesBuildPhase section */ 137 | C2E739851660F6900042CF6D /* CopyFiles */ = { 138 | isa = PBXCopyFilesBuildPhase; 139 | buildActionMask = 2147483647; 140 | dstPath = "include/${PRODUCT_NAME}"; 141 | dstSubfolderSpec = 16; 142 | files = ( 143 | ); 144 | runOnlyForDeploymentPostprocessing = 0; 145 | }; 146 | /* End PBXCopyFilesBuildPhase section */ 147 | 148 | /* Begin PBXFileReference section */ 149 | C20BA5D116591397009CDED0 /* AnyJSON+JSONKit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AnyJSON+JSONKit.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 150 | C20BA5D516591397009CDED0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 151 | C20BA5D716591397009CDED0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 152 | C20BA5D916591397009CDED0 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 153 | C20BA5DD16591397009CDED0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 154 | C20BA5E116591397009CDED0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 155 | C20BA5E316591397009CDED0 /* Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = ""; }; 156 | C20BA5E416591397009CDED0 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 157 | C20BA5E516591397009CDED0 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 158 | C20BA5ED16591398009CDED0 /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; 159 | C20BA5EE16591398009CDED0 /* RootViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; 160 | C20BA60016591451009CDED0 /* RootViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = ""; }; 161 | C20BA602165915D3009CDED0 /* AnyJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnyJSON.m; sourceTree = ""; }; 162 | C21E2A45166E9CC300F1E521 /* NextiveJson.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = NextiveJson.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; 163 | C21E2A58166EA2C300F1E521 /* JSONKit.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = JSONKit.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; 164 | C21E2A60166EA88400F1E521 /* YAJL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = YAJL.xcodeproj; path = YAJL/Project/YAJL.xcodeproj; sourceTree = ""; }; 165 | C22FAD7D16714E7000AD3D85 /* AnyJSON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnyJSON.h; sourceTree = ""; }; 166 | C297520C1660126900C734D3 /* JSONKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSONKit.m; sourceTree = ""; }; 167 | C29752211660129500C734D3 /* AnyJSON+YAJL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AnyJSON+YAJL.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 168 | C297522C1660139A00C734D3 /* YAJLiOS.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = YAJLiOS.xcodeproj; path = "YAJL/Project-iOS/YAJLiOS.xcodeproj"; sourceTree = ""; }; 169 | C29752501660145700C734D3 /* SBJson.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SBJson.xcodeproj; path = SBJson/SBJson.xcodeproj; sourceTree = ""; }; 170 | C2975285166014A700C734D3 /* AnyJSON+SBJson.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AnyJSON+SBJson.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 171 | C29752991660152200C734D3 /* AnyJSON+NextiveJson.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AnyJSON+NextiveJson.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 172 | C297529F1660159200C734D3 /* NSError+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+Extensions.h"; sourceTree = ""; }; 173 | C29752A01660159200C734D3 /* NSError+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+Extensions.m"; sourceTree = ""; }; 174 | C29752A11660159200C734D3 /* NXDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NXDebug.h; sourceTree = ""; }; 175 | C29752A21660159200C734D3 /* NXDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NXDebug.m; sourceTree = ""; }; 176 | C29752A31660159200C734D3 /* NXJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NXJsonParser.h; sourceTree = ""; }; 177 | C29752A41660159200C734D3 /* NXJsonParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NXJsonParser.m; sourceTree = ""; }; 178 | C29752A51660159200C734D3 /* NXJsonSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NXJsonSerializer.h; sourceTree = ""; }; 179 | C29752A61660159200C734D3 /* NXJsonSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NXJsonSerializer.m; sourceTree = ""; }; 180 | C29752A71660159200C734D3 /* NXSerializable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NXSerializable.h; sourceTree = ""; }; 181 | C29752B3166015AD00C734D3 /* JSONKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSONKit.h; sourceTree = ""; }; 182 | C2E7397E166041670042CF6D /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 183 | C2E739871660F6900042CF6D /* libAnyJSON.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAnyJSON.a; sourceTree = BUILT_PRODUCTS_DIR; }; 184 | C2E739A81661030B0042CF6D /* AnyJSON+JSONKit-Static.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AnyJSON+JSONKit-Static.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 185 | /* End PBXFileReference section */ 186 | 187 | /* Begin PBXFrameworksBuildPhase section */ 188 | C20BA5CE16591397009CDED0 /* Frameworks */ = { 189 | isa = PBXFrameworksBuildPhase; 190 | buildActionMask = 2147483647; 191 | files = ( 192 | C20BA5D616591397009CDED0 /* UIKit.framework in Frameworks */, 193 | C20BA5D816591397009CDED0 /* Foundation.framework in Frameworks */, 194 | C20BA5DA16591397009CDED0 /* CoreGraphics.framework in Frameworks */, 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | }; 198 | C21E2A42166E9CC300F1E521 /* Frameworks */ = { 199 | isa = PBXFrameworksBuildPhase; 200 | buildActionMask = 2147483647; 201 | files = ( 202 | ); 203 | runOnlyForDeploymentPostprocessing = 0; 204 | }; 205 | C21E2A53166EA2C300F1E521 /* Frameworks */ = { 206 | isa = PBXFrameworksBuildPhase; 207 | buildActionMask = 2147483647; 208 | files = ( 209 | ); 210 | runOnlyForDeploymentPostprocessing = 0; 211 | }; 212 | C29752181660129500C734D3 /* Frameworks */ = { 213 | isa = PBXFrameworksBuildPhase; 214 | buildActionMask = 2147483647; 215 | files = ( 216 | C29752191660129500C734D3 /* UIKit.framework in Frameworks */, 217 | C297521A1660129500C734D3 /* Foundation.framework in Frameworks */, 218 | C297521B1660129500C734D3 /* CoreGraphics.framework in Frameworks */, 219 | ); 220 | runOnlyForDeploymentPostprocessing = 0; 221 | }; 222 | C297527C166014A700C734D3 /* Frameworks */ = { 223 | isa = PBXFrameworksBuildPhase; 224 | buildActionMask = 2147483647; 225 | files = ( 226 | C297527D166014A700C734D3 /* UIKit.framework in Frameworks */, 227 | C297527E166014A700C734D3 /* Foundation.framework in Frameworks */, 228 | C297527F166014A700C734D3 /* CoreGraphics.framework in Frameworks */, 229 | C2E739961660FA2D0042CF6D /* libAnyJSON.a in Frameworks */, 230 | ); 231 | runOnlyForDeploymentPostprocessing = 0; 232 | }; 233 | C29752901660152200C734D3 /* Frameworks */ = { 234 | isa = PBXFrameworksBuildPhase; 235 | buildActionMask = 2147483647; 236 | files = ( 237 | C29752911660152200C734D3 /* UIKit.framework in Frameworks */, 238 | C29752921660152200C734D3 /* Foundation.framework in Frameworks */, 239 | C29752931660152200C734D3 /* CoreGraphics.framework in Frameworks */, 240 | ); 241 | runOnlyForDeploymentPostprocessing = 0; 242 | }; 243 | C2E739841660F6900042CF6D /* Frameworks */ = { 244 | isa = PBXFrameworksBuildPhase; 245 | buildActionMask = 2147483647; 246 | files = ( 247 | C2E739881660F6900042CF6D /* Foundation.framework in Frameworks */, 248 | ); 249 | runOnlyForDeploymentPostprocessing = 0; 250 | }; 251 | C2E7399E1661030B0042CF6D /* Frameworks */ = { 252 | isa = PBXFrameworksBuildPhase; 253 | buildActionMask = 2147483647; 254 | files = ( 255 | C2E7399F1661030B0042CF6D /* UIKit.framework in Frameworks */, 256 | C2E739A01661030B0042CF6D /* Foundation.framework in Frameworks */, 257 | C2E739A11661030B0042CF6D /* CoreGraphics.framework in Frameworks */, 258 | C2E739AB166103430042CF6D /* libAnyJSON.a in Frameworks */, 259 | ); 260 | runOnlyForDeploymentPostprocessing = 0; 261 | }; 262 | /* End PBXFrameworksBuildPhase section */ 263 | 264 | /* Begin PBXGroup section */ 265 | C20BA5C616591397009CDED0 = { 266 | isa = PBXGroup; 267 | children = ( 268 | C20BA5DB16591397009CDED0 /* AnyJSON Example */, 269 | F85092591675527000E10C02 /* AnyJSON */, 270 | C29752081660126000C734D3 /* Libraries */, 271 | C20BA5D416591397009CDED0 /* Frameworks */, 272 | C20BA5D216591397009CDED0 /* Products */, 273 | ); 274 | indentWidth = 4; 275 | sourceTree = ""; 276 | tabWidth = 4; 277 | usesTabs = 0; 278 | }; 279 | C20BA5D216591397009CDED0 /* Products */ = { 280 | isa = PBXGroup; 281 | children = ( 282 | C20BA5D116591397009CDED0 /* AnyJSON+JSONKit.app */, 283 | C29752211660129500C734D3 /* AnyJSON+YAJL.app */, 284 | C2975285166014A700C734D3 /* AnyJSON+SBJson.app */, 285 | C29752991660152200C734D3 /* AnyJSON+NextiveJson.app */, 286 | C2E739871660F6900042CF6D /* libAnyJSON.a */, 287 | C2E739A81661030B0042CF6D /* AnyJSON+JSONKit-Static.app */, 288 | C21E2A45166E9CC300F1E521 /* NextiveJson.dylib */, 289 | C21E2A58166EA2C300F1E521 /* JSONKit.dylib */, 290 | ); 291 | name = Products; 292 | sourceTree = ""; 293 | }; 294 | C20BA5D416591397009CDED0 /* Frameworks */ = { 295 | isa = PBXGroup; 296 | children = ( 297 | C20BA5D516591397009CDED0 /* UIKit.framework */, 298 | C20BA5D716591397009CDED0 /* Foundation.framework */, 299 | C20BA5D916591397009CDED0 /* CoreGraphics.framework */, 300 | ); 301 | name = Frameworks; 302 | sourceTree = ""; 303 | }; 304 | C20BA5DB16591397009CDED0 /* AnyJSON Example */ = { 305 | isa = PBXGroup; 306 | children = ( 307 | C20BA5E416591397009CDED0 /* AppDelegate.h */, 308 | C20BA5E516591397009CDED0 /* AppDelegate.m */, 309 | C20BA5ED16591398009CDED0 /* RootViewController.h */, 310 | C20BA5EE16591398009CDED0 /* RootViewController.m */, 311 | C20BA60016591451009CDED0 /* RootViewController.xib */, 312 | C20BA5DC16591397009CDED0 /* Supporting Files */, 313 | ); 314 | name = "AnyJSON Example"; 315 | path = ./; 316 | sourceTree = ""; 317 | }; 318 | C20BA5DC16591397009CDED0 /* Supporting Files */ = { 319 | isa = PBXGroup; 320 | children = ( 321 | C2E7397E166041670042CF6D /* Default-568h@2x.png */, 322 | C20BA5DD16591397009CDED0 /* Info.plist */, 323 | C20BA5E316591397009CDED0 /* Prefix.pch */, 324 | C20BA5E116591397009CDED0 /* main.m */, 325 | ); 326 | name = "Supporting Files"; 327 | sourceTree = ""; 328 | }; 329 | C29752081660126000C734D3 /* Libraries */ = { 330 | isa = PBXGroup; 331 | children = ( 332 | C29752091660126900C734D3 /* JSONKit */, 333 | C297529E1660159200C734D3 /* NextiveJson */, 334 | C29752501660145700C734D3 /* SBJson.xcodeproj */, 335 | C21E2A60166EA88400F1E521 /* YAJL.xcodeproj */, 336 | C297522C1660139A00C734D3 /* YAJLiOS.xcodeproj */, 337 | ); 338 | path = Libraries; 339 | sourceTree = ""; 340 | }; 341 | C29752091660126900C734D3 /* JSONKit */ = { 342 | isa = PBXGroup; 343 | children = ( 344 | C29752B3166015AD00C734D3 /* JSONKit.h */, 345 | C297520C1660126900C734D3 /* JSONKit.m */, 346 | ); 347 | path = JSONKit; 348 | sourceTree = ""; 349 | }; 350 | C297529E1660159200C734D3 /* NextiveJson */ = { 351 | isa = PBXGroup; 352 | children = ( 353 | C297529F1660159200C734D3 /* NSError+Extensions.h */, 354 | C29752A01660159200C734D3 /* NSError+Extensions.m */, 355 | C29752A11660159200C734D3 /* NXDebug.h */, 356 | C29752A21660159200C734D3 /* NXDebug.m */, 357 | C29752A31660159200C734D3 /* NXJsonParser.h */, 358 | C29752A41660159200C734D3 /* NXJsonParser.m */, 359 | C29752A51660159200C734D3 /* NXJsonSerializer.h */, 360 | C29752A61660159200C734D3 /* NXJsonSerializer.m */, 361 | C29752A71660159200C734D3 /* NXSerializable.h */, 362 | ); 363 | name = NextiveJson; 364 | path = NextiveJson/Json; 365 | sourceTree = ""; 366 | }; 367 | F85092591675527000E10C02 /* AnyJSON */ = { 368 | isa = PBXGroup; 369 | children = ( 370 | C22FAD7D16714E7000AD3D85 /* AnyJSON.h */, 371 | C20BA602165915D3009CDED0 /* AnyJSON.m */, 372 | ); 373 | name = AnyJSON; 374 | path = ../AnyJSON; 375 | sourceTree = ""; 376 | }; 377 | F8BA3D33167581E200B99B93 /* Products */ = { 378 | isa = PBXGroup; 379 | children = ( 380 | F8BA3D3A167581E200B99B93 /* SBJson.framework */, 381 | F8BA3D3C167581E200B99B93 /* SBJsonTests.octest */, 382 | F8BA3D3E167581E200B99B93 /* libsbjson-ios.a */, 383 | F8BA3D40167581E200B99B93 /* sbjson-iosTests.octest */, 384 | ); 385 | name = Products; 386 | sourceTree = ""; 387 | }; 388 | F8BA3D45167581FE00B99B93 /* Products */ = { 389 | isa = PBXGroup; 390 | children = ( 391 | F8BA3D4C167581FE00B99B93 /* libYAJLiOSDevice.a */, 392 | F8BA3D4E167581FE00B99B93 /* libYAJLiOSSimulator.a */, 393 | F8BA3D50167581FE00B99B93 /* Tests.app */, 394 | ); 395 | name = Products; 396 | sourceTree = ""; 397 | }; 398 | F8BA3D551675820600B99B93 /* Products */ = { 399 | isa = PBXGroup; 400 | children = ( 401 | F8BA3D5A1675820600B99B93 /* YAJL.framework */, 402 | F8BA3D5C1675820600B99B93 /* Tests.framework */, 403 | ); 404 | name = Products; 405 | sourceTree = ""; 406 | }; 407 | /* End PBXGroup section */ 408 | 409 | /* Begin PBXHeadersBuildPhase section */ 410 | C21E2A43166E9CC300F1E521 /* Headers */ = { 411 | isa = PBXHeadersBuildPhase; 412 | buildActionMask = 2147483647; 413 | files = ( 414 | ); 415 | runOnlyForDeploymentPostprocessing = 0; 416 | }; 417 | C21E2A54166EA2C300F1E521 /* Headers */ = { 418 | isa = PBXHeadersBuildPhase; 419 | buildActionMask = 2147483647; 420 | files = ( 421 | ); 422 | runOnlyForDeploymentPostprocessing = 0; 423 | }; 424 | /* End PBXHeadersBuildPhase section */ 425 | 426 | /* Begin PBXNativeTarget section */ 427 | C20BA5D016591397009CDED0 /* AnyJSON+JSONKit */ = { 428 | isa = PBXNativeTarget; 429 | buildConfigurationList = C20BA5F816591398009CDED0 /* Build configuration list for PBXNativeTarget "AnyJSON+JSONKit" */; 430 | buildPhases = ( 431 | C20BA5CD16591397009CDED0 /* Sources */, 432 | C20BA5CE16591397009CDED0 /* Frameworks */, 433 | C20BA5CF16591397009CDED0 /* Resources */, 434 | ); 435 | buildRules = ( 436 | ); 437 | dependencies = ( 438 | ); 439 | name = "AnyJSON+JSONKit"; 440 | productName = "AnyJSON Example"; 441 | productReference = C20BA5D116591397009CDED0 /* AnyJSON+JSONKit.app */; 442 | productType = "com.apple.product-type.application"; 443 | }; 444 | C21E2A44166E9CC300F1E521 /* NextiveJson */ = { 445 | isa = PBXNativeTarget; 446 | buildConfigurationList = C21E2A46166E9CC300F1E521 /* Build configuration list for PBXNativeTarget "NextiveJson" */; 447 | buildPhases = ( 448 | C21E2A41166E9CC300F1E521 /* Sources */, 449 | C21E2A42166E9CC300F1E521 /* Frameworks */, 450 | C21E2A43166E9CC300F1E521 /* Headers */, 451 | ); 452 | buildRules = ( 453 | ); 454 | dependencies = ( 455 | ); 456 | name = NextiveJson; 457 | productName = NextiveJson; 458 | productReference = C21E2A45166E9CC300F1E521 /* NextiveJson.dylib */; 459 | productType = "com.apple.product-type.library.dynamic"; 460 | }; 461 | C21E2A4D166EA2C300F1E521 /* JSONKit */ = { 462 | isa = PBXNativeTarget; 463 | buildConfigurationList = C21E2A55166EA2C300F1E521 /* Build configuration list for PBXNativeTarget "JSONKit" */; 464 | buildPhases = ( 465 | C21E2A4E166EA2C300F1E521 /* Sources */, 466 | C21E2A53166EA2C300F1E521 /* Frameworks */, 467 | C21E2A54166EA2C300F1E521 /* Headers */, 468 | ); 469 | buildRules = ( 470 | ); 471 | dependencies = ( 472 | ); 473 | name = JSONKit; 474 | productName = NextiveJson; 475 | productReference = C21E2A58166EA2C300F1E521 /* JSONKit.dylib */; 476 | productType = "com.apple.product-type.library.dynamic"; 477 | }; 478 | C29752111660129500C734D3 /* AnyJSON+YAJL */ = { 479 | isa = PBXNativeTarget; 480 | buildConfigurationList = C297521E1660129500C734D3 /* Build configuration list for PBXNativeTarget "AnyJSON+YAJL" */; 481 | buildPhases = ( 482 | C29752121660129500C734D3 /* Sources */, 483 | C29752181660129500C734D3 /* Frameworks */, 484 | C297521C1660129500C734D3 /* Resources */, 485 | ); 486 | buildRules = ( 487 | ); 488 | dependencies = ( 489 | ); 490 | name = "AnyJSON+YAJL"; 491 | productName = "AnyJSON Example"; 492 | productReference = C29752211660129500C734D3 /* AnyJSON+YAJL.app */; 493 | productType = "com.apple.product-type.application"; 494 | }; 495 | C2975275166014A700C734D3 /* AnyJSON+SBJson */ = { 496 | isa = PBXNativeTarget; 497 | buildConfigurationList = C2975282166014A700C734D3 /* Build configuration list for PBXNativeTarget "AnyJSON+SBJson" */; 498 | buildPhases = ( 499 | C2975276166014A700C734D3 /* Sources */, 500 | C297527C166014A700C734D3 /* Frameworks */, 501 | C2975280166014A700C734D3 /* Resources */, 502 | ); 503 | buildRules = ( 504 | ); 505 | dependencies = ( 506 | ); 507 | name = "AnyJSON+SBJson"; 508 | productName = "AnyJSON Example"; 509 | productReference = C2975285166014A700C734D3 /* AnyJSON+SBJson.app */; 510 | productType = "com.apple.product-type.application"; 511 | }; 512 | C29752891660152200C734D3 /* AnyJSON+NextiveJson */ = { 513 | isa = PBXNativeTarget; 514 | buildConfigurationList = C29752961660152200C734D3 /* Build configuration list for PBXNativeTarget "AnyJSON+NextiveJson" */; 515 | buildPhases = ( 516 | C297528A1660152200C734D3 /* Sources */, 517 | C29752901660152200C734D3 /* Frameworks */, 518 | C29752941660152200C734D3 /* Resources */, 519 | ); 520 | buildRules = ( 521 | ); 522 | dependencies = ( 523 | ); 524 | name = "AnyJSON+NextiveJson"; 525 | productName = "AnyJSON Example"; 526 | productReference = C29752991660152200C734D3 /* AnyJSON+NextiveJson.app */; 527 | productType = "com.apple.product-type.application"; 528 | }; 529 | C2E739861660F6900042CF6D /* AnyJSON */ = { 530 | isa = PBXNativeTarget; 531 | buildConfigurationList = C2E739901660F6900042CF6D /* Build configuration list for PBXNativeTarget "AnyJSON" */; 532 | buildPhases = ( 533 | C2E739831660F6900042CF6D /* Sources */, 534 | C2E739841660F6900042CF6D /* Frameworks */, 535 | C2E739851660F6900042CF6D /* CopyFiles */, 536 | ); 537 | buildRules = ( 538 | ); 539 | dependencies = ( 540 | ); 541 | name = AnyJSON; 542 | productName = AnyJSON; 543 | productReference = C2E739871660F6900042CF6D /* libAnyJSON.a */; 544 | productType = "com.apple.product-type.library.static"; 545 | }; 546 | C2E739971661030B0042CF6D /* AnyJSON+JSONKit-Static */ = { 547 | isa = PBXNativeTarget; 548 | buildConfigurationList = C2E739A51661030B0042CF6D /* Build configuration list for PBXNativeTarget "AnyJSON+JSONKit-Static" */; 549 | buildPhases = ( 550 | C2E739981661030B0042CF6D /* Sources */, 551 | C2E7399E1661030B0042CF6D /* Frameworks */, 552 | C2E739A21661030B0042CF6D /* Resources */, 553 | ); 554 | buildRules = ( 555 | ); 556 | dependencies = ( 557 | ); 558 | name = "AnyJSON+JSONKit-Static"; 559 | productName = "AnyJSON Example"; 560 | productReference = C2E739A81661030B0042CF6D /* AnyJSON+JSONKit-Static.app */; 561 | productType = "com.apple.product-type.application"; 562 | }; 563 | /* End PBXNativeTarget section */ 564 | 565 | /* Begin PBXProject section */ 566 | C20BA5C816591397009CDED0 /* Project object */ = { 567 | isa = PBXProject; 568 | attributes = { 569 | LastUpgradeCheck = 0450; 570 | }; 571 | buildConfigurationList = C20BA5CB16591397009CDED0 /* Build configuration list for PBXProject "AnyJSON Example" */; 572 | compatibilityVersion = "Xcode 3.2"; 573 | developmentRegion = English; 574 | hasScannedForEncodings = 0; 575 | knownRegions = ( 576 | en, 577 | English, 578 | ); 579 | mainGroup = C20BA5C616591397009CDED0; 580 | productRefGroup = C20BA5D216591397009CDED0 /* Products */; 581 | projectDirPath = ""; 582 | projectReferences = ( 583 | { 584 | ProductGroup = F8BA3D33167581E200B99B93 /* Products */; 585 | ProjectRef = C29752501660145700C734D3 /* SBJson.xcodeproj */; 586 | }, 587 | { 588 | ProductGroup = F8BA3D551675820600B99B93 /* Products */; 589 | ProjectRef = C21E2A60166EA88400F1E521 /* YAJL.xcodeproj */; 590 | }, 591 | { 592 | ProductGroup = F8BA3D45167581FE00B99B93 /* Products */; 593 | ProjectRef = C297522C1660139A00C734D3 /* YAJLiOS.xcodeproj */; 594 | }, 595 | ); 596 | projectRoot = ""; 597 | targets = ( 598 | C20BA5D016591397009CDED0 /* AnyJSON+JSONKit */, 599 | C2E739971661030B0042CF6D /* AnyJSON+JSONKit-Static */, 600 | C29752891660152200C734D3 /* AnyJSON+NextiveJson */, 601 | C2975275166014A700C734D3 /* AnyJSON+SBJson */, 602 | C29752111660129500C734D3 /* AnyJSON+YAJL */, 603 | C2E739861660F6900042CF6D /* AnyJSON */, 604 | C21E2A4D166EA2C300F1E521 /* JSONKit */, 605 | C21E2A44166E9CC300F1E521 /* NextiveJson */, 606 | ); 607 | }; 608 | /* End PBXProject section */ 609 | 610 | /* Begin PBXReferenceProxy section */ 611 | F8BA3D3A167581E200B99B93 /* SBJson.framework */ = { 612 | isa = PBXReferenceProxy; 613 | fileType = wrapper.framework; 614 | path = SBJson.framework; 615 | remoteRef = F8BA3D39167581E200B99B93 /* PBXContainerItemProxy */; 616 | sourceTree = BUILT_PRODUCTS_DIR; 617 | }; 618 | F8BA3D3C167581E200B99B93 /* SBJsonTests.octest */ = { 619 | isa = PBXReferenceProxy; 620 | fileType = wrapper.cfbundle; 621 | path = SBJsonTests.octest; 622 | remoteRef = F8BA3D3B167581E200B99B93 /* PBXContainerItemProxy */; 623 | sourceTree = BUILT_PRODUCTS_DIR; 624 | }; 625 | F8BA3D3E167581E200B99B93 /* libsbjson-ios.a */ = { 626 | isa = PBXReferenceProxy; 627 | fileType = archive.ar; 628 | path = "libsbjson-ios.a"; 629 | remoteRef = F8BA3D3D167581E200B99B93 /* PBXContainerItemProxy */; 630 | sourceTree = BUILT_PRODUCTS_DIR; 631 | }; 632 | F8BA3D40167581E200B99B93 /* sbjson-iosTests.octest */ = { 633 | isa = PBXReferenceProxy; 634 | fileType = wrapper.cfbundle; 635 | path = "sbjson-iosTests.octest"; 636 | remoteRef = F8BA3D3F167581E200B99B93 /* PBXContainerItemProxy */; 637 | sourceTree = BUILT_PRODUCTS_DIR; 638 | }; 639 | F8BA3D4C167581FE00B99B93 /* libYAJLiOSDevice.a */ = { 640 | isa = PBXReferenceProxy; 641 | fileType = archive.ar; 642 | path = libYAJLiOSDevice.a; 643 | remoteRef = F8BA3D4B167581FE00B99B93 /* PBXContainerItemProxy */; 644 | sourceTree = BUILT_PRODUCTS_DIR; 645 | }; 646 | F8BA3D4E167581FE00B99B93 /* libYAJLiOSSimulator.a */ = { 647 | isa = PBXReferenceProxy; 648 | fileType = archive.ar; 649 | path = libYAJLiOSSimulator.a; 650 | remoteRef = F8BA3D4D167581FE00B99B93 /* PBXContainerItemProxy */; 651 | sourceTree = BUILT_PRODUCTS_DIR; 652 | }; 653 | F8BA3D50167581FE00B99B93 /* Tests.app */ = { 654 | isa = PBXReferenceProxy; 655 | fileType = wrapper.application; 656 | path = Tests.app; 657 | remoteRef = F8BA3D4F167581FE00B99B93 /* PBXContainerItemProxy */; 658 | sourceTree = BUILT_PRODUCTS_DIR; 659 | }; 660 | F8BA3D5A1675820600B99B93 /* YAJL.framework */ = { 661 | isa = PBXReferenceProxy; 662 | fileType = wrapper.framework; 663 | path = YAJL.framework; 664 | remoteRef = F8BA3D591675820600B99B93 /* PBXContainerItemProxy */; 665 | sourceTree = BUILT_PRODUCTS_DIR; 666 | }; 667 | F8BA3D5C1675820600B99B93 /* Tests.framework */ = { 668 | isa = PBXReferenceProxy; 669 | fileType = wrapper.application; 670 | path = Tests.framework; 671 | remoteRef = F8BA3D5B1675820600B99B93 /* PBXContainerItemProxy */; 672 | sourceTree = BUILT_PRODUCTS_DIR; 673 | }; 674 | /* End PBXReferenceProxy section */ 675 | 676 | /* Begin PBXResourcesBuildPhase section */ 677 | C20BA5CF16591397009CDED0 /* Resources */ = { 678 | isa = PBXResourcesBuildPhase; 679 | buildActionMask = 2147483647; 680 | files = ( 681 | C20BA60116591451009CDED0 /* RootViewController.xib in Resources */, 682 | C2E7397F166041670042CF6D /* Default-568h@2x.png in Resources */, 683 | ); 684 | runOnlyForDeploymentPostprocessing = 0; 685 | }; 686 | C297521C1660129500C734D3 /* Resources */ = { 687 | isa = PBXResourcesBuildPhase; 688 | buildActionMask = 2147483647; 689 | files = ( 690 | C297521D1660129500C734D3 /* RootViewController.xib in Resources */, 691 | C2E73982166041670042CF6D /* Default-568h@2x.png in Resources */, 692 | ); 693 | runOnlyForDeploymentPostprocessing = 0; 694 | }; 695 | C2975280166014A700C734D3 /* Resources */ = { 696 | isa = PBXResourcesBuildPhase; 697 | buildActionMask = 2147483647; 698 | files = ( 699 | C2975281166014A700C734D3 /* RootViewController.xib in Resources */, 700 | C2E73981166041670042CF6D /* Default-568h@2x.png in Resources */, 701 | ); 702 | runOnlyForDeploymentPostprocessing = 0; 703 | }; 704 | C29752941660152200C734D3 /* Resources */ = { 705 | isa = PBXResourcesBuildPhase; 706 | buildActionMask = 2147483647; 707 | files = ( 708 | C29752951660152200C734D3 /* RootViewController.xib in Resources */, 709 | C2E73980166041670042CF6D /* Default-568h@2x.png in Resources */, 710 | ); 711 | runOnlyForDeploymentPostprocessing = 0; 712 | }; 713 | C2E739A21661030B0042CF6D /* Resources */ = { 714 | isa = PBXResourcesBuildPhase; 715 | buildActionMask = 2147483647; 716 | files = ( 717 | C2E739A31661030B0042CF6D /* RootViewController.xib in Resources */, 718 | C2E739A41661030B0042CF6D /* Default-568h@2x.png in Resources */, 719 | ); 720 | runOnlyForDeploymentPostprocessing = 0; 721 | }; 722 | /* End PBXResourcesBuildPhase section */ 723 | 724 | /* Begin PBXSourcesBuildPhase section */ 725 | C20BA5CD16591397009CDED0 /* Sources */ = { 726 | isa = PBXSourcesBuildPhase; 727 | buildActionMask = 2147483647; 728 | files = ( 729 | C20BA5E216591397009CDED0 /* main.m in Sources */, 730 | C20BA5E616591397009CDED0 /* AppDelegate.m in Sources */, 731 | C20BA5EF16591398009CDED0 /* RootViewController.m in Sources */, 732 | C2E739951660FA1F0042CF6D /* AnyJSON.m in Sources */, 733 | C297520F1660126900C734D3 /* JSONKit.m in Sources */, 734 | ); 735 | runOnlyForDeploymentPostprocessing = 0; 736 | }; 737 | C21E2A41166E9CC300F1E521 /* Sources */ = { 738 | isa = PBXSourcesBuildPhase; 739 | buildActionMask = 2147483647; 740 | files = ( 741 | C21E2A49166E9CEB00F1E521 /* NSError+Extensions.m in Sources */, 742 | C21E2A4A166E9CED00F1E521 /* NXDebug.m in Sources */, 743 | C21E2A4B166E9CEF00F1E521 /* NXJsonParser.m in Sources */, 744 | C21E2A4C166E9CF200F1E521 /* NXJsonSerializer.m in Sources */, 745 | ); 746 | runOnlyForDeploymentPostprocessing = 0; 747 | }; 748 | C21E2A4E166EA2C300F1E521 /* Sources */ = { 749 | isa = PBXSourcesBuildPhase; 750 | buildActionMask = 2147483647; 751 | files = ( 752 | C21E2A59166EA2E300F1E521 /* JSONKit.m in Sources */, 753 | ); 754 | runOnlyForDeploymentPostprocessing = 0; 755 | }; 756 | C29752121660129500C734D3 /* Sources */ = { 757 | isa = PBXSourcesBuildPhase; 758 | buildActionMask = 2147483647; 759 | files = ( 760 | C29752131660129500C734D3 /* main.m in Sources */, 761 | C29752141660129500C734D3 /* AppDelegate.m in Sources */, 762 | C29752151660129500C734D3 /* RootViewController.m in Sources */, 763 | C29752161660129500C734D3 /* AnyJSON.m in Sources */, 764 | ); 765 | runOnlyForDeploymentPostprocessing = 0; 766 | }; 767 | C2975276166014A700C734D3 /* Sources */ = { 768 | isa = PBXSourcesBuildPhase; 769 | buildActionMask = 2147483647; 770 | files = ( 771 | C2975277166014A700C734D3 /* main.m in Sources */, 772 | C2975278166014A700C734D3 /* AppDelegate.m in Sources */, 773 | C2975279166014A700C734D3 /* RootViewController.m in Sources */, 774 | ); 775 | runOnlyForDeploymentPostprocessing = 0; 776 | }; 777 | C297528A1660152200C734D3 /* Sources */ = { 778 | isa = PBXSourcesBuildPhase; 779 | buildActionMask = 2147483647; 780 | files = ( 781 | C297528B1660152200C734D3 /* main.m in Sources */, 782 | C297528C1660152200C734D3 /* AppDelegate.m in Sources */, 783 | C297528D1660152200C734D3 /* RootViewController.m in Sources */, 784 | C297528E1660152200C734D3 /* AnyJSON.m in Sources */, 785 | C29752AD1660159200C734D3 /* NSError+Extensions.m in Sources */, 786 | C29752AE1660159200C734D3 /* NXDebug.m in Sources */, 787 | C29752AF1660159200C734D3 /* NXJsonParser.m in Sources */, 788 | C29752B01660159200C734D3 /* NXJsonSerializer.m in Sources */, 789 | ); 790 | runOnlyForDeploymentPostprocessing = 0; 791 | }; 792 | C2E739831660F6900042CF6D /* Sources */ = { 793 | isa = PBXSourcesBuildPhase; 794 | buildActionMask = 2147483647; 795 | files = ( 796 | C2E739931660F6BF0042CF6D /* AnyJSON.m in Sources */, 797 | ); 798 | runOnlyForDeploymentPostprocessing = 0; 799 | }; 800 | C2E739981661030B0042CF6D /* Sources */ = { 801 | isa = PBXSourcesBuildPhase; 802 | buildActionMask = 2147483647; 803 | files = ( 804 | C2E739991661030B0042CF6D /* main.m in Sources */, 805 | C2E7399A1661030B0042CF6D /* AppDelegate.m in Sources */, 806 | C2E7399B1661030B0042CF6D /* RootViewController.m in Sources */, 807 | C2E7399D1661030B0042CF6D /* JSONKit.m in Sources */, 808 | ); 809 | runOnlyForDeploymentPostprocessing = 0; 810 | }; 811 | /* End PBXSourcesBuildPhase section */ 812 | 813 | /* Begin XCBuildConfiguration section */ 814 | C20BA5F616591398009CDED0 /* Debug */ = { 815 | isa = XCBuildConfiguration; 816 | buildSettings = { 817 | ALWAYS_SEARCH_USER_PATHS = NO; 818 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 819 | CLANG_CXX_LIBRARY = "libc++"; 820 | CLANG_ENABLE_OBJC_ARC = YES; 821 | CLANG_WARN_EMPTY_BODY = YES; 822 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 823 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 824 | COPY_PHASE_STRIP = NO; 825 | GCC_C_LANGUAGE_STANDARD = gnu99; 826 | GCC_DYNAMIC_NO_PIC = NO; 827 | GCC_OPTIMIZATION_LEVEL = 0; 828 | GCC_PREPROCESSOR_DEFINITIONS = ( 829 | "DEBUG=1", 830 | "$(inherited)", 831 | ); 832 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 833 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 834 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 835 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 836 | GCC_WARN_UNUSED_VARIABLE = YES; 837 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 838 | MACOSX_DEPLOYMENT_TARGET = 10.6; 839 | SDKROOT = iphoneos; 840 | TARGETED_DEVICE_FAMILY = "1,2"; 841 | }; 842 | name = Debug; 843 | }; 844 | C20BA5F716591398009CDED0 /* Release */ = { 845 | isa = XCBuildConfiguration; 846 | buildSettings = { 847 | ALWAYS_SEARCH_USER_PATHS = NO; 848 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 849 | CLANG_CXX_LIBRARY = "libc++"; 850 | CLANG_ENABLE_OBJC_ARC = YES; 851 | CLANG_WARN_EMPTY_BODY = YES; 852 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 853 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 854 | COPY_PHASE_STRIP = YES; 855 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 856 | GCC_C_LANGUAGE_STANDARD = gnu99; 857 | GCC_PREPROCESSOR_DEFINITIONS = "NS_BLOCK_ASSERTIONS=1"; 858 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 859 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 860 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 861 | GCC_WARN_UNUSED_VARIABLE = YES; 862 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 863 | MACOSX_DEPLOYMENT_TARGET = 10.6; 864 | SDKROOT = iphoneos; 865 | TARGETED_DEVICE_FAMILY = "1,2"; 866 | VALIDATE_PRODUCT = YES; 867 | }; 868 | name = Release; 869 | }; 870 | C20BA5F916591398009CDED0 /* Debug */ = { 871 | isa = XCBuildConfiguration; 872 | buildSettings = { 873 | FRAMEWORK_SEARCH_PATHS = ( 874 | "$(inherited)", 875 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 876 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 877 | ); 878 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 879 | GCC_PREFIX_HEADER = Prefix.pch; 880 | INFOPLIST_FILE = Info.plist; 881 | PRODUCT_NAME = "$(TARGET_NAME)"; 882 | WRAPPER_EXTENSION = app; 883 | }; 884 | name = Debug; 885 | }; 886 | C20BA5FA16591398009CDED0 /* Release */ = { 887 | isa = XCBuildConfiguration; 888 | buildSettings = { 889 | FRAMEWORK_SEARCH_PATHS = ( 890 | "$(inherited)", 891 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 892 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 893 | ); 894 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 895 | GCC_PREFIX_HEADER = Prefix.pch; 896 | INFOPLIST_FILE = Info.plist; 897 | PRODUCT_NAME = "$(TARGET_NAME)"; 898 | WRAPPER_EXTENSION = app; 899 | }; 900 | name = Release; 901 | }; 902 | C21E2A47166E9CC300F1E521 /* Debug */ = { 903 | isa = XCBuildConfiguration; 904 | buildSettings = { 905 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 906 | CLANG_ENABLE_OBJC_ARC = NO; 907 | PRODUCT_NAME = "$(TARGET_NAME)"; 908 | SDKROOT = macosx; 909 | }; 910 | name = Debug; 911 | }; 912 | C21E2A48166E9CC300F1E521 /* Release */ = { 913 | isa = XCBuildConfiguration; 914 | buildSettings = { 915 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 916 | CLANG_ENABLE_OBJC_ARC = NO; 917 | PRODUCT_NAME = "$(TARGET_NAME)"; 918 | SDKROOT = macosx; 919 | }; 920 | name = Release; 921 | }; 922 | C21E2A56166EA2C300F1E521 /* Debug */ = { 923 | isa = XCBuildConfiguration; 924 | buildSettings = { 925 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 926 | CLANG_ENABLE_OBJC_ARC = NO; 927 | PRODUCT_NAME = "$(TARGET_NAME)"; 928 | SDKROOT = macosx; 929 | }; 930 | name = Debug; 931 | }; 932 | C21E2A57166EA2C300F1E521 /* Release */ = { 933 | isa = XCBuildConfiguration; 934 | buildSettings = { 935 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 936 | CLANG_ENABLE_OBJC_ARC = NO; 937 | PRODUCT_NAME = "$(TARGET_NAME)"; 938 | SDKROOT = macosx; 939 | }; 940 | name = Release; 941 | }; 942 | C297521F1660129500C734D3 /* Debug */ = { 943 | isa = XCBuildConfiguration; 944 | buildSettings = { 945 | FRAMEWORK_SEARCH_PATHS = ( 946 | "$(inherited)", 947 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 948 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 949 | ); 950 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 951 | GCC_PREFIX_HEADER = Prefix.pch; 952 | INFOPLIST_FILE = Info.plist; 953 | OTHER_LDFLAGS = "-ObjC"; 954 | PRODUCT_NAME = "$(TARGET_NAME)"; 955 | WRAPPER_EXTENSION = app; 956 | }; 957 | name = Debug; 958 | }; 959 | C29752201660129500C734D3 /* Release */ = { 960 | isa = XCBuildConfiguration; 961 | buildSettings = { 962 | FRAMEWORK_SEARCH_PATHS = ( 963 | "$(inherited)", 964 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 965 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 966 | ); 967 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 968 | GCC_PREFIX_HEADER = Prefix.pch; 969 | INFOPLIST_FILE = Info.plist; 970 | OTHER_LDFLAGS = "-ObjC"; 971 | PRODUCT_NAME = "$(TARGET_NAME)"; 972 | WRAPPER_EXTENSION = app; 973 | }; 974 | name = Release; 975 | }; 976 | C2975283166014A700C734D3 /* Debug */ = { 977 | isa = XCBuildConfiguration; 978 | buildSettings = { 979 | FRAMEWORK_SEARCH_PATHS = ( 980 | "$(inherited)", 981 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 982 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 983 | ); 984 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 985 | GCC_PREFIX_HEADER = Prefix.pch; 986 | INFOPLIST_FILE = Info.plist; 987 | OTHER_LDFLAGS = "-ObjC"; 988 | PRODUCT_NAME = "$(TARGET_NAME)"; 989 | WRAPPER_EXTENSION = app; 990 | }; 991 | name = Debug; 992 | }; 993 | C2975284166014A700C734D3 /* Release */ = { 994 | isa = XCBuildConfiguration; 995 | buildSettings = { 996 | FRAMEWORK_SEARCH_PATHS = ( 997 | "$(inherited)", 998 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 999 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 1000 | ); 1001 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1002 | GCC_PREFIX_HEADER = Prefix.pch; 1003 | INFOPLIST_FILE = Info.plist; 1004 | OTHER_LDFLAGS = "-ObjC"; 1005 | PRODUCT_NAME = "$(TARGET_NAME)"; 1006 | WRAPPER_EXTENSION = app; 1007 | }; 1008 | name = Release; 1009 | }; 1010 | C29752971660152200C734D3 /* Debug */ = { 1011 | isa = XCBuildConfiguration; 1012 | buildSettings = { 1013 | FRAMEWORK_SEARCH_PATHS = ( 1014 | "$(inherited)", 1015 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 1016 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 1017 | ); 1018 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1019 | GCC_PREFIX_HEADER = Prefix.pch; 1020 | INFOPLIST_FILE = Info.plist; 1021 | PRODUCT_NAME = "$(TARGET_NAME)"; 1022 | WRAPPER_EXTENSION = app; 1023 | }; 1024 | name = Debug; 1025 | }; 1026 | C29752981660152200C734D3 /* Release */ = { 1027 | isa = XCBuildConfiguration; 1028 | buildSettings = { 1029 | FRAMEWORK_SEARCH_PATHS = ( 1030 | "$(inherited)", 1031 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 1032 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 1033 | ); 1034 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1035 | GCC_PREFIX_HEADER = Prefix.pch; 1036 | INFOPLIST_FILE = Info.plist; 1037 | PRODUCT_NAME = "$(TARGET_NAME)"; 1038 | WRAPPER_EXTENSION = app; 1039 | }; 1040 | name = Release; 1041 | }; 1042 | C2E739911660F6900042CF6D /* Debug */ = { 1043 | isa = XCBuildConfiguration; 1044 | buildSettings = { 1045 | CLANG_ENABLE_OBJC_ARC = NO; 1046 | DSTROOT = /tmp/AnyJSON.dst; 1047 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 1048 | OTHER_LDFLAGS = "-ObjC"; 1049 | PRODUCT_NAME = "$(TARGET_NAME)"; 1050 | SKIP_INSTALL = YES; 1051 | }; 1052 | name = Debug; 1053 | }; 1054 | C2E739921660F6900042CF6D /* Release */ = { 1055 | isa = XCBuildConfiguration; 1056 | buildSettings = { 1057 | CLANG_ENABLE_OBJC_ARC = NO; 1058 | DSTROOT = /tmp/AnyJSON.dst; 1059 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 1060 | OTHER_LDFLAGS = "-ObjC"; 1061 | PRODUCT_NAME = "$(TARGET_NAME)"; 1062 | SKIP_INSTALL = YES; 1063 | }; 1064 | name = Release; 1065 | }; 1066 | C2E739A61661030B0042CF6D /* Debug */ = { 1067 | isa = XCBuildConfiguration; 1068 | buildSettings = { 1069 | FRAMEWORK_SEARCH_PATHS = ( 1070 | "$(inherited)", 1071 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 1072 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 1073 | ); 1074 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1075 | GCC_PREFIX_HEADER = Prefix.pch; 1076 | INFOPLIST_FILE = Info.plist; 1077 | OTHER_LDFLAGS = ( 1078 | "-force_load", 1079 | "\"$(BUILT_PRODUCTS_DIR)/libAnyJSON.a\"", 1080 | ); 1081 | PRODUCT_NAME = "$(TARGET_NAME)"; 1082 | WRAPPER_EXTENSION = app; 1083 | }; 1084 | name = Debug; 1085 | }; 1086 | C2E739A71661030B0042CF6D /* Release */ = { 1087 | isa = XCBuildConfiguration; 1088 | buildSettings = { 1089 | FRAMEWORK_SEARCH_PATHS = ( 1090 | "$(inherited)", 1091 | "\"$(SRCROOT)/Libraries/YAJL/Project/Frameworks\"", 1092 | "\"$(SRCROOT)/Libraries/YAJL/Project-iOS/Libraries\"", 1093 | ); 1094 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1095 | GCC_PREFIX_HEADER = Prefix.pch; 1096 | INFOPLIST_FILE = Info.plist; 1097 | OTHER_LDFLAGS = ( 1098 | "-force_load", 1099 | "\"$(BUILT_PRODUCTS_DIR)/libAnyJSON.a\"", 1100 | ); 1101 | PRODUCT_NAME = "$(TARGET_NAME)"; 1102 | WRAPPER_EXTENSION = app; 1103 | }; 1104 | name = Release; 1105 | }; 1106 | /* End XCBuildConfiguration section */ 1107 | 1108 | /* Begin XCConfigurationList section */ 1109 | C20BA5CB16591397009CDED0 /* Build configuration list for PBXProject "AnyJSON Example" */ = { 1110 | isa = XCConfigurationList; 1111 | buildConfigurations = ( 1112 | C20BA5F616591398009CDED0 /* Debug */, 1113 | C20BA5F716591398009CDED0 /* Release */, 1114 | ); 1115 | defaultConfigurationIsVisible = 0; 1116 | defaultConfigurationName = Release; 1117 | }; 1118 | C20BA5F816591398009CDED0 /* Build configuration list for PBXNativeTarget "AnyJSON+JSONKit" */ = { 1119 | isa = XCConfigurationList; 1120 | buildConfigurations = ( 1121 | C20BA5F916591398009CDED0 /* Debug */, 1122 | C20BA5FA16591398009CDED0 /* Release */, 1123 | ); 1124 | defaultConfigurationIsVisible = 0; 1125 | defaultConfigurationName = Release; 1126 | }; 1127 | C21E2A46166E9CC300F1E521 /* Build configuration list for PBXNativeTarget "NextiveJson" */ = { 1128 | isa = XCConfigurationList; 1129 | buildConfigurations = ( 1130 | C21E2A47166E9CC300F1E521 /* Debug */, 1131 | C21E2A48166E9CC300F1E521 /* Release */, 1132 | ); 1133 | defaultConfigurationIsVisible = 0; 1134 | defaultConfigurationName = Release; 1135 | }; 1136 | C21E2A55166EA2C300F1E521 /* Build configuration list for PBXNativeTarget "JSONKit" */ = { 1137 | isa = XCConfigurationList; 1138 | buildConfigurations = ( 1139 | C21E2A56166EA2C300F1E521 /* Debug */, 1140 | C21E2A57166EA2C300F1E521 /* Release */, 1141 | ); 1142 | defaultConfigurationIsVisible = 0; 1143 | defaultConfigurationName = Release; 1144 | }; 1145 | C297521E1660129500C734D3 /* Build configuration list for PBXNativeTarget "AnyJSON+YAJL" */ = { 1146 | isa = XCConfigurationList; 1147 | buildConfigurations = ( 1148 | C297521F1660129500C734D3 /* Debug */, 1149 | C29752201660129500C734D3 /* Release */, 1150 | ); 1151 | defaultConfigurationIsVisible = 0; 1152 | defaultConfigurationName = Release; 1153 | }; 1154 | C2975282166014A700C734D3 /* Build configuration list for PBXNativeTarget "AnyJSON+SBJson" */ = { 1155 | isa = XCConfigurationList; 1156 | buildConfigurations = ( 1157 | C2975283166014A700C734D3 /* Debug */, 1158 | C2975284166014A700C734D3 /* Release */, 1159 | ); 1160 | defaultConfigurationIsVisible = 0; 1161 | defaultConfigurationName = Release; 1162 | }; 1163 | C29752961660152200C734D3 /* Build configuration list for PBXNativeTarget "AnyJSON+NextiveJson" */ = { 1164 | isa = XCConfigurationList; 1165 | buildConfigurations = ( 1166 | C29752971660152200C734D3 /* Debug */, 1167 | C29752981660152200C734D3 /* Release */, 1168 | ); 1169 | defaultConfigurationIsVisible = 0; 1170 | defaultConfigurationName = Release; 1171 | }; 1172 | C2E739901660F6900042CF6D /* Build configuration list for PBXNativeTarget "AnyJSON" */ = { 1173 | isa = XCConfigurationList; 1174 | buildConfigurations = ( 1175 | C2E739911660F6900042CF6D /* Debug */, 1176 | C2E739921660F6900042CF6D /* Release */, 1177 | ); 1178 | defaultConfigurationIsVisible = 0; 1179 | defaultConfigurationName = Release; 1180 | }; 1181 | C2E739A51661030B0042CF6D /* Build configuration list for PBXNativeTarget "AnyJSON+JSONKit-Static" */ = { 1182 | isa = XCConfigurationList; 1183 | buildConfigurations = ( 1184 | C2E739A61661030B0042CF6D /* Debug */, 1185 | C2E739A71661030B0042CF6D /* Release */, 1186 | ); 1187 | defaultConfigurationIsVisible = 0; 1188 | defaultConfigurationName = Release; 1189 | }; 1190 | /* End XCConfigurationList section */ 1191 | }; 1192 | rootObject = C20BA5C816591397009CDED0 /* Project object */; 1193 | } 1194 | -------------------------------------------------------------------------------- /Example/AnyJSON Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // AppDelegate.h 2 | // 3 | // Copyright (c) 2012 Cédric Luthi (https://twitter.com/0xced) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | @interface AppDelegate : UIResponder 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Example/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // AppDelegate.m 2 | // 3 | // Copyright (c) 2012 Cédric Luthi (https://twitter.com/0xced) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "AppDelegate.h" 24 | 25 | #import "RootViewController.h" 26 | 27 | @implementation AppDelegate 28 | @synthesize window = _window; 29 | 30 | - (BOOL)application:(UIApplication *)application 31 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 32 | { 33 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 34 | 35 | UIViewController *viewController = [[RootViewController alloc] init]; 36 | UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 37 | [navigationController.navigationBar setBarStyle:UIBarStyleBlackOpaque]; 38 | self.window.rootViewController = navigationController; 39 | 40 | [self.window makeKeyAndVisible]; 41 | 42 | return YES; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Example/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattt/AnyJSON/acdf09b5facec8c4376f3a45f9c797780dff4b56/Example/Default-568h@2x.png -------------------------------------------------------------------------------- /Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.alamofire.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1.0 23 | LSRequiresIPhoneOS 24 | 25 | UIRequiredDeviceCapabilities 26 | 27 | armv7 28 | 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | 33 | UISupportedInterfaceOrientations~ipad 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationPortraitUpsideDown 37 | UIInterfaceOrientationLandscapeLeft 38 | UIInterfaceOrientationLandscapeRight 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Example/Prefix.pch: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #ifndef __IPHONE_4_0 4 | #warning "This project uses features only available in iOS SDK 4.0 and later." 5 | #endif 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #import 10 | #endif 11 | -------------------------------------------------------------------------------- /Example/RootViewController.h: -------------------------------------------------------------------------------- 1 | // RootViewController.h 2 | // 3 | // Copyright (c) 2012 Cédric Luthi (https://twitter.com/0xced) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | @interface RootViewController : UIViewController 24 | 25 | @property (nonatomic, unsafe_unretained) IBOutlet UILabel *libraryLabel; 26 | @property (nonatomic, unsafe_unretained) IBOutlet UITextView *inputTextView; 27 | @property (nonatomic, unsafe_unretained) IBOutlet UITextView *outputTextView; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/RootViewController.m: -------------------------------------------------------------------------------- 1 | // RootViewController.m 2 | // 3 | // Copyright (c) 2012 Cédric Luthi (https://twitter.com/0xced) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "RootViewController.h" 24 | 25 | @implementation RootViewController 26 | 27 | #pragma mark - UIViewController 28 | 29 | - (void)viewDidLoad { 30 | self.title = NSLocalizedString(@"AnyJSON", nil); 31 | 32 | NSString *library = @"None"; 33 | if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_5_0) { 34 | library = @"NSJSONSerialization"; 35 | } else if (NSClassFromString(@"JKSerializer")) { 36 | library = @"JSONKit"; 37 | } else if (NSClassFromString(@"NXJsonSerializer")) { 38 | library = @"NextiveJson"; 39 | } else if (NSClassFromString(@"SBJsonWriter")) { 40 | library = @"SBJson"; 41 | } else if (NSClassFromString(@"YAJLGen")) { 42 | library = @"YAJL"; 43 | } 44 | 45 | self.libraryLabel.text = library; 46 | } 47 | 48 | #pragma mark - IBAction 49 | 50 | - (IBAction)test:(id)sender { 51 | [self.view endEditing:YES]; 52 | 53 | @try { 54 | NSError *readingError = nil; 55 | NSJSONReadingOptions readingOptions = 0; 56 | id object = [NSJSONSerialization JSONObjectWithData:[self.inputTextView.text dataUsingEncoding:NSUTF8StringEncoding] options:readingOptions error:&readingError]; 57 | if (!object) { 58 | self.outputTextView.text = [NSString stringWithFormat:NSLocalizedString(@"Reading Error: %@", nil), readingError]; 59 | return; 60 | } 61 | 62 | NSError *writingError = nil; 63 | NSJSONWritingOptions writingOptions = 0; 64 | NSData *data = [NSJSONSerialization dataWithJSONObject:object options:writingOptions error:&writingError]; 65 | if (!data) { 66 | self.outputTextView.text = [NSString stringWithFormat:NSLocalizedString(@"Writing Error: %@", nil), writingError]; 67 | return; 68 | } 69 | 70 | self.outputTextView.text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 71 | } @catch (NSException *exception) { 72 | self.outputTextView.text = [NSString stringWithFormat:NSLocalizedString(@"Exception: %@", nil), exception]; 73 | } 74 | } 75 | 76 | @end 77 | -------------------------------------------------------------------------------- /Example/RootViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1072 5 | 12C60 6 | 2844 7 | 1187.34 8 | 625.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 1930 12 | 13 | 14 | IBProxyObject 15 | IBUIButton 16 | IBUILabel 17 | IBUITextView 18 | IBUIView 19 | 20 | 21 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 22 | 23 | 24 | PluginDependencyRecalculationVersion 25 | 26 | 27 | 28 | 29 | IBFilesOwner 30 | IBCocoaTouchFramework 31 | 32 | 33 | IBFirstResponder 34 | IBCocoaTouchFramework 35 | 36 | 37 | 38 | 274 39 | 40 | 41 | 42 | 306 43 | {320, 154} 44 | 45 | 46 | 47 | _NS:9 48 | 49 | 1 50 | MSAxIDEAA 51 | 52 | YES 53 | YES 54 | IBCocoaTouchFramework 55 | { "one" : 1, "two": 2 } 56 | 57 | 2 58 | IBCocoaTouchFramework 59 | 60 | 61 | 1 62 | 14 63 | 64 | 65 | Helvetica 66 | 14 67 | 16 68 | 69 | 70 | 71 | 72 | 299 73 | {{230, 162}, {80, 33}} 74 | 75 | 76 | 77 | _NS:9 78 | NO 79 | IBCocoaTouchFramework 80 | 0 81 | 0 82 | 1 83 | Test 84 | 85 | 3 86 | MQA 87 | 88 | 89 | 1 90 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 91 | 92 | 93 | 3 94 | MC41AA 95 | 96 | 97 | 2 98 | 15 99 | 100 | 101 | Helvetica-Bold 102 | 15 103 | 16 104 | 105 | 106 | 107 | 108 | 302 109 | {{10, 167}, {204, 21}} 110 | 111 | 112 | 113 | _NS:9 114 | NO 115 | YES 116 | 7 117 | NO 118 | IBCocoaTouchFramework 119 | Library 120 | 121 | 3 122 | MC4zMzMzMzMzMzMzAA 123 | 124 | 125 | 0 126 | 127 | 2 128 | 16 129 | 130 | 131 | Helvetica-Bold 132 | 16 133 | 16 134 | 135 | NO 136 | 137 | 138 | 139 | 282 140 | {{0, 202}, {320, 222}} 141 | 142 | 143 | _NS:9 144 | 145 | YES 146 | YES 147 | IBCocoaTouchFramework 148 | 149 | 150 | 2 151 | IBCocoaTouchFramework 152 | 153 | 154 | 155 | 156 | 157 | {{0, 64}, {320, 416}} 158 | 159 | 160 | 161 | 162 | 3 163 | MC43NQA 164 | 165 | 2 166 | 167 | 168 | NO 169 | 170 | 171 | 1 172 | NO 173 | 174 | 175 | IBUIScreenMetrics 176 | 177 | YES 178 | 179 | 180 | 181 | 182 | 183 | {320, 480} 184 | {480, 320} 185 | 186 | 187 | IBCocoaTouchFramework 188 | Retina 3.5 Full Screen 189 | 0 190 | 191 | IBCocoaTouchFramework 192 | 193 | 194 | 195 | 196 | 197 | 198 | view 199 | 200 | 201 | 202 | 7 203 | 204 | 205 | 206 | inputTextView 207 | 208 | 209 | 210 | 26 211 | 212 | 213 | 214 | libraryLabel 215 | 216 | 217 | 218 | 27 219 | 220 | 221 | 222 | outputTextView 223 | 224 | 225 | 226 | 28 227 | 228 | 229 | 230 | test: 231 | 232 | 233 | 7 234 | 235 | 22 236 | 237 | 238 | 239 | 240 | 241 | 0 242 | 243 | 244 | 245 | 246 | 247 | -1 248 | 249 | 250 | File's Owner 251 | 252 | 253 | -2 254 | 255 | 256 | 257 | 258 | 6 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 12 270 | 271 | 272 | 273 | 274 | 16 275 | 276 | 277 | JSON Text View 278 | 279 | 280 | 17 281 | 282 | 283 | Data Text View 284 | 285 | 286 | 25 287 | 288 | 289 | 290 | 291 | 292 | 293 | DemoViewController 294 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 295 | UIResponder 296 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 297 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 298 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 299 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 300 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 301 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 302 | 303 | 304 | 305 | 306 | 307 | 28 308 | 309 | 310 | 311 | 312 | DemoViewController 313 | UIViewController 314 | 315 | UITextView 316 | UILabel 317 | UITextView 318 | 319 | 320 | 321 | inputTextView 322 | UITextView 323 | 324 | 325 | libraryLabel 326 | UILabel 327 | 328 | 329 | outputTextView 330 | UITextView 331 | 332 | 333 | 334 | IBProjectSource 335 | ./Classes/DemoViewController.h 336 | 337 | 338 | 339 | 340 | 0 341 | IBCocoaTouchFramework 342 | 343 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 344 | 345 | 346 | YES 347 | 3 348 | 1930 349 | 350 | 351 | -------------------------------------------------------------------------------- /Example/main.m: -------------------------------------------------------------------------------- 1 | // main.m 2 | // 3 | // Copyright (c) 2012 Cédric Luthi (https://twitter.com/0xced) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "AppDelegate.h" 24 | 25 | int main(int argc, char *argv[]) { 26 | @autoreleasepool { 27 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 Mattt (https://mat.tt/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## AnyJSON 2 | 3 | > This project is no longer maintained. 4 | 5 | **Encode / Decode JSON By Any Means Possible** 6 | 7 | AnyJSON implements the `NSJSONSerialization` API 8 | for platforms that don't support it --- 9 | namely iOS < 5 and Mac OS X < 10.7 --- 10 | using the first available of the following 3rd-party libraries: 11 | 12 | - [JSONKit](https://github.com/johnezang/JSONKit) 13 | - [yajl_json](https://github.com/gabriel/yajl-objc) 14 | - [SBJSON](https://github.com/stig/json-framework) 15 | - [NextiveJSON](https://github.com/nextive/NextiveJson) 16 | 17 | > For anyone who appreciates lower-level Objective-C hacks, 18 | > you won't want to miss 19 | > [how AnyJSON works its magic](https://github.com/mattt/AnyJSON/blob/master/AnyJSON/AnyJSON.m#L247). 20 | 21 | ## Compatibility 22 | 23 | ### Supported Methods 24 | 25 | The following methods are supported by AnyJSON: 26 | 27 | ```objective-c 28 | + (id)JSONObjectWithData:(NSData *)data 29 | options:(NSJSONReadingOptions)opt 30 | error:(NSError **)error 31 | 32 | + (NSData *)dataWithJSONObject:(id)obj 33 | options:(NSJSONWritingOptions)opt 34 | error:(NSError **)error 35 | ``` 36 | 37 | ### Supported Reading Options 38 | 39 | - `NSJSONReadingMutableContainers` is supported only by JSONKit 40 | - `NSJSONReadingMutableLeaves` is not supported 41 | (it doesn't even work with `NSJSONSerialization` on iOS 5+). 42 | - `NSJSONReadingAllowFragments` is not supported, 43 | though NextiveJSON always allows fragments 44 | 45 | ### Supported Writing Options 46 | 47 | - `NSJSONWritingPrettyPrinted` is supported by JSONKit, yajl_json, and SBJSON 48 | 49 | ### Unsupported Methods 50 | 51 | The following methods are not currently supported by AnyJSON, 52 | and instead throw an `AnyJSONUnimplementedException` exception when called: 53 | 54 | ```objective-c 55 | + (id)JSONObjectWithStream:(NSInputStream *)stream 56 | options:(NSJSONReadingOptions)opt 57 | error:(NSError **)error 58 | 59 | + (NSInteger)writeJSONObject:(id)obj 60 | toStream:(NSOutputStream *)stream 61 | options:(NSJSONWritingOptions)opt 62 | error:(NSError **)error 63 | 64 | + (BOOL)isValidJSONObject:(id)obj 65 | ``` 66 | 67 | ## Contact 68 | 69 | - [Cédric Luthi](https://twitter.com/0xced) 70 | - [Mattt](https://twitter.com/mattt) 71 | 72 | ## License 73 | 74 | AnyJSON is available under the MIT license. 75 | See the LICENSE file for more info. 76 | --------------------------------------------------------------------------------