Why generate Objective-C in 2026?
Objective-C remains essential for maintaining legacy iOS and macOS codebases, integrating with Cocoa frameworks that still expose Objective-C APIs, bridging Swift modules to older internal SDKs, and writing performance-critical code where the Objective-C runtime gives finer control. Many shipping apps at large companies remain hybrid Swift/Objective-C and need fresh model classes generated continuously.
What about Swift — should I use that instead?
Swift is the recommended language for new iOS development since 2014, and OpenFormatter offers a JSON to Swift converter for Codable structs. Choose Objective-C generation when you are extending an existing Objective-C module, writing a class that needs to be visible from Objective-C without @objc annotation overhead, or maintaining an iOS app whose architecture is still primarily Objective-C.
How are nested JSON objects mapped?
Each nested JSON object becomes its own @interface declaration. The parent class references the child by pointer (ChildClass *). Class names are derived from the JSON key in PascalCase. Generate the .h file from the converter output and add a matching .m file with @implementation stubs in your Xcode project.
How are JSON types mapped to Objective-C?
Strings become NSString*, booleans become BOOL (assign), numbers become NSNumber* (so they can be nullable like JSON), arrays become NSArray*, objects become typed pointer references, and JSON null becomes id. Use NSNumber instead of primitive int/float to mirror JSON nullability — JSON has only one number type.
Should I deserialize with NSJSONSerialization or a library?
NSJSONSerialization (Foundation) is the no-dependency choice — parse the data, then assign each NSDictionary key to a property in initWithDictionary:. For larger projects, Mantle, JSONModel, or YYModel automate the dictionary-to-object mapping using runtime reflection so you do not write boilerplate setters by hand.
How are JSON keys with dashes or reserved words handled?
A JSON key like "user-id" is converted to userId (camelCase). Keys colliding with Objective-C reserved words like new, class, or id are usually safe as @property names because the runtime allows them, but consider renaming them to avoid confusion. Override the JSON-to-property mapping at deserialization time using a key transformer.
Is the JSON uploaded to your servers?
No. Conversion runs entirely in your browser via JavaScript. Open DevTools → Network and click Convert — no requests are made. Pasting JSON containing API tokens, customer data, or proprietary field names never leaves your machine.
Do I need ARC for the generated classes?
Yes — strong is the default ownership qualifier in modern Objective-C and assumes ARC (Automatic Reference Counting) is enabled for the file. ARC has been the default since Xcode 4.2 and is required for new App Store submissions. If you are working in a manual-retain-release file, switch strong to retain.