We all know that JSON is the most suitable format for to and fro of the data through mobile services. Because, It is light weight and the format is easy to read and write.
In this post let's discuss on how to prepare a JSON object from a list of information whether it's a key based information (NSDictionary) or a index based information (NSArray).
Let's say we have user profile information in a dictionary as shown below.
NSDictionary *userInfoDict = [NSDictionary alloc] initWithObjectsAndKeys:
@"Karunakar",@"firstname",
@"Bandikatla",@"lastname",
@"Male",@"gender",
@"India",@"country",
@"Degree",@"education",
nil];
We need to send the above information to a service. Obviously, we can't send a dictionary object to a service. We need to convert it to string format and on the server side this information should be parsable. So we need to convert it to a JSON string.
Let's see how to convert a dictionary information to a JSON string using Objective C.
Using NSJSONSerialization, we can convert this dictionary to NSData and then we can pass it to service or we can convert this to NSString from NSData and then pass it as a JSON formatted string as shown below.
NSData *jsonData = [NSJSONSerialization dataWithJSONObject: userInfoDict
options:NSJSONWritingPrettyPrinted
error:&error];
Sometimes, we may even need to upload user information or some other information as a file to the server. In this case we can directly give NSData to file upload service. We need to check the error value to make sure things are fine before sending it to the server.
Last but not the least, let's see what is that 'options' parameter here. If we are uploading this user info file to the server, If we open that file, If we want that file to be in a JSON readable format like shown below, the option should be NSJSONWritingPrettyPrinted. If you are not bothered about the pretty writing format, you can ignore that parameter.
Hope this post is useful. Feel free to comment incase of any queries.
Swift Protocols & Extensions |
---|
Swift Comparable Protocol |
Swift Equatable Protocol |
Protocol Extensions for Default and Convenient API |
Protocols vs Base classes |
Multiple Inheritance using protocols |
Swift Protocol Extensions |
Swift Constrained Extensions |
Multiple Inheritance, Diamond problem |
Multiple Inheritance using protocols, Diamond Problem |
Swift - Preserving Structure Default Initializer using Extensions |
Swift Closures |
---|
Swift Closures Capture List |
Swift Escaping Closures (@escaping) |
Swift - weak and unowned references |
Swift 4 Tutorials |
---|
Swift 4 NEW Tutorial-1 (One Sided Ranges) |
Swift 4 NEW Tutorial-2 (Strings are Collections Again) |
Swift 4 NEW Tutorial-3 (private instead fileprivate) |
Swift 4 NEW Tutorial-4 (fileprivate to private) |
Swift CoreData Tutorials |
---|
Swift - CoreData - CRUD Operations (Tutorial-1) |
Swift - CoreData - Validations (Tutorial-2) |
Swift - CoreData - To One Relationship (Tutorial-3) |
Swift - CoreData - To One - Inverse Relationship (Tutorial-4) |
Swift - CoreData - To Many - Inverse Relationship (Tutorial-5) |
Method Swizzling Tutorials |
---|
Swift 4, Method initailize defines Objective-C class method initialize(), which is not guaranteed to be invoked by Swift and will be disallowed in future versions |
Swift 4 Method Swizzling (Part 2/2) |
Swift 4 Method Swizzling (Part 1/2) |
NSPredicate Tutorials |
---|
Objective C NSPredicate Part 1/4 |
Objective C NSPredicate Part 2/4 |
Objective C NSPredicate Part 3/4 |
Objective C NSPredicate Part 4/4 |
iOS Fixing Security Vulerabilities Tutorials |
---|
iOS Format String Attacks |
iOS Jailbreak Unchecked File Operation Result Code |
iOS Screen Caching Security Vulnerability |
XMPP Chat Framework Tutorials |
---|
Encoding & Decoding emoji characters In the chat applications using Objective C |
Objective C methods for new user registration in xmpp framework |
Objective-C XMPP search users by username |
Retrieving chat history from Openfire using XMPP |
Displaying emoji characters in UILabel |
Getting old messages or chat history from XMPP |
XMPP searching users by username |
XMPP framework User Registration Methods |
XMPP user change password using Objective C |
Change XMPP registered user password |
Blog Archive |
---|
Custom cell class data source in MVVM design pattern |
Swift - Multiple levels of Optional Binding |
Swift - App is currently in Main Thread or not |
Swift Nil-Coalescing Operator for Optionals |
Enum raw value comparisons |
guard statement return/break/continue |
Case-sensitive and Case-Insensitive sorting |
valueForKey (vs) objectForKey |
If-Let & Guard-Let Multiple Optional Bindings |
Color and Image Literals |
Swift Enums as Models |
Swift convenience initializers |
Tappable links in UITextView |
UITableView Scrolling issue for cells having UITextField/UITextView as subviews |
illegal Configuration Safe Area Layout Guide before iOS 9.0 |
iOS Checking device is in 24 hour format or not |
Displaying URL loading error in WebView in HTML format |
Checking whether iOS app is running in a device having safe area (iPhoneX) or not |
xcodebuild: error: invalid option '-exportFormat' |
Interface Segregation Principle in SOLID (Object-Oriented Design) |
Swift - Handling web links in dynamic content |
Swift - Class and Static Methods |
Swift - MVVM - RXSwift Instead of didSet() |
Swift Failable Initializers |
Objective-C/Swift avoid crashes in iPad in an iPhone Application |
No comments:
Post a Comment