{"id":18271738,"url":"https://github.com/gabriel/yajl-objc","last_synced_at":"2025-04-05T02:30:41.359Z","repository":{"id":513476,"uuid":"141320","full_name":"gabriel/yajl-objc","owner":"gabriel","description":"Objective-C bindings for YAJL (Yet Another JSON Library) C library","archived":false,"fork":false,"pushed_at":"2021-10-13T21:58:34.000Z","size":7325,"stargazers_count":670,"open_issues_count":9,"forks_count":111,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-04T06:46:03.310Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://lloyd.github.com/yajl","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabriel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2009-03-02T18:49:01.000Z","updated_at":"2025-03-10T09:52:46.000Z","dependencies_parsed_at":"2022-08-03T03:46:15.787Z","dependency_job_id":null,"html_url":"https://github.com/gabriel/yajl-objc","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel%2Fyajl-objc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel%2Fyajl-objc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel%2Fyajl-objc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriel%2Fyajl-objc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabriel","download_url":"https://codeload.github.com/gabriel/yajl-objc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247279258,"owners_count":20912853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T11:39:29.312Z","updated_at":"2025-04-05T02:30:40.627Z","avatar_url":"https://github.com/gabriel.png","language":"C","funding_links":[],"categories":["etc"],"sub_categories":[],"readme":"# YAJL Framework\n\nThe YAJL framework is an Objective-C framework for the [YAJL](http://lloyd.github.com/yajl/) SAX-style JSON parser.\n\n## Features\n\n- Stream parsing, comments in JSON, better error messages.\n- Parse directly from NSString or NSData.\n- Generate JSON from default or custom types.\n- Properly handles large numeric types.\n- Document style parser.\n- Error by exception or out error.\n\n# Integration\n\n## CocoaPods\n\n```ruby\npod \"YAJLO\"\n```\n\n## Swift Package Manager\n\nYou can use The Swift Package Manager to install yajl-objc by adding the proper description to your Package.swift file:\n\n```swift\n// swift-tools-version:5.5\nimport PackageDescription\n\nlet package = Package(\n    name: \"YOUR_PROJECT_NAME\",\n    dependencies: [\n        .package(url: \"https://github.com/gabriel/yajl-objc.git\", from: \"0.3.4\"),\n    ]\n)\n```\n\n# Usage\n\n```objc\n#import \u003cYAJLO/NSObject+YAJL.h\u003e\n#import \u003cYAJLO/YAJLDocument.h\u003e\n#import \u003cYAJLO/YAJLGen.h\u003e\n#import \u003cYAJLO/YAJLParser.h\u003e\n```\n\n### To parse JSON from NSData\n\n```objc\nNSData *JSONData = [NSData dataWithContentsOfFile:@\"example.json\"];\nNSArray *arrayFromData = [JSONData yajl_JSON];\n```\n\n### To parse JSON from NSString\n\n```objc\nNSString *JSONString = @\"[1, 2, 3]\";\nNSArray *arrayFromString = [JSONString yajl_JSON];\n```\n\n### To parse JSON from NSString with error and comments\n\n```objc\n// With options and out error\nNSString *JSONString = @\"[1, 2, 3] // Allow comments\";\nNSError *error = nil;\nNSArray *arrayFromString = [JSONString yajl_JSONWithOptions:YAJLParserOptionsAllowComments error:\u0026error];\n```\n\n### To generate JSON from an object, NSArray, NSDictionary, etc.\n\n```objc\nNSDictionary *dict = [NSDictionary dictionaryWithObject:@\"value\" forKey:@\"key\"];\nNSString *JSONString = [dict yajl_JSONString];\n// ==\u003e {\"key\":\"value\"}\n```\n\n### To generate JSON from an object, beautified with custom indent\n\n```objc\n// Beautified with custon indent string\nNSArray *array = [NSArray arrayWithObjects:@\"value1\", @\"value2\", nil];\nNSString *JSONString = [dict yajl_JSONStringWithOptions:YAJLGenOptionsBeautify indentString:@\"    \"];\n```\n\n### To use the streaming (or SAX style) parser, use YAJLParser\n\n```objc\nNSData *data = [NSData dataWithContentsOfFile:@\"example.json\"];\n\nYAJLParser *parser = [[YAJLParser alloc] initWithParserOptions:YAJLParserOptionsAllowComments];\nparser.delegate = self;\n[parser parse:data];\nif (parser.parserError) {\n  NSLog(@\"Error:\\n%@\", parser.parserError);\n}\nparser.delegate = nil;\n\n// Include delegate methods from YAJLParserDelegate\n- (void)parserDidStartDictionary:(YAJLParser *)parser { }\n- (void)parserDidEndDictionary:(YAJLParser *)parser { }\n\n- (void)parserDidStartArray:(YAJLParser *)parser { }\n- (void)parserDidEndArray:(YAJLParser *)parser { }\n\n- (void)parser:(YAJLParser *)parser didMapKey:(NSString *)key { }\n- (void)parser:(YAJLParser *)parser didAdd:(id)value { }\n```\n\n### Parser Options\n\nThere are options when parsing that can be specified with initWithParserOptions: (YAJLParser).\n\n- `YAJLParserOptionsAllowComments`: Allows comments in JSON\n- `YAJLParserOptionsCheckUTF8`: Will verify UTF-8\n- `YAJLParserOptionsStrictPrecision`: Will force strict precision and return integer overflow error, if number is greater than long long.\n\n### Parsing as data becomes available\n\n```objc\n YAJLParser *parser = [[YAJLParser alloc] init];\n parser.delegate = self;\n\n // A chunk of data comes...\n YAJLParserStatus status = [parser parse:chunk1];\n // 'status' should be YAJLParserStatusInsufficientData, if its not finished\n if (parser.parserError)\n   NSLog(@\"Error:\\n%@\", parser.parserError);\n\n // Another chunk of data comes...\n YAJLParserStatus status = [parser parse:chunk2];\n // 'status' should be YAJLParserStatusOK if its finished\n if (parser.parserError)\n   NSLog(@\"Error:\\n%@\", parser.parserError);\n```\n\n### Document style parsing\n\nTo use the document style, use YAJLDocument. Usage should be very similar to NSXMLDocument.\n\n```objc\n NSData *data = [NSData dataWithContentsOfFile:@\"example.json\"];\n NSError *error = nil;\n YAJLDocument *document = [[YAJLDocument alloc] initWithData:data parserOptions:YAJLParserOptionsNone error:\u0026error];\n // Access root element at document.root\n NSLog(@\"Root: %@\", document.root);\n```\n\n### Document style parsing as data becomes available\n\n```objc\n YAJLDocument *document = [[YAJLDocument alloc] init];\n document.delegate = self;\n\n NSError *error = nil;\n [document parse:chunk1 error:error];\n [document parse:chunk2 error:error];\n\n // You can access root element at document.root\n NSLog(@\"Root: %@\", document.root);\n\n // Or via the YAJLDocumentDelegate delegate methods\n\n - (void)document:(YAJLDocument *)document didAddDictionary:(NSDictionary *)dict { }\n - (void)document:(YAJLDocument *)document didAddArray:(NSArray *)array { }\n - (void)document:(YAJLDocument *)document didAddObject:(id)object toArray:(NSArray *)array { }\n - (void)document:(YAJLDocument *)document didSetObject:(id)object forKey:(id)key inDictionary:(NSDictionary *)dict { }\n```\n\n### Load JSON from Bundle\n\n```objc\nid JSONValue = [[NSBundle mainBundle] yajl_JSONFromResource:@\"kegs.json\"];\n```\n\n### Customized Encoding\n\nTo implement JSON encodable value for custom objects or override for existing objects, implement - (id)JSON;\n\nFor example:\n\n```objc\n@interface CustomObject : NSObject\n@end\n\n@implementation CustomObject\n\n- (id)JSON {\n return [NSArray arrayWithObject:[NSNumber numberWithInteger:1]];\n}\n\n@end\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabriel%2Fyajl-objc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabriel%2Fyajl-objc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabriel%2Fyajl-objc/lists"}