First fill two NSDictionaries with your 'meta' and 'data' info. Then add those into a main NSDictionary and then serialize using NSJsonSerialization
NSDictionary * metaDict = [[NSDictionary alloc] initWithObjectsAndKeys:
@"appId", @"S3B9CU4R2B9JTXV9254Y", @"appVersion", @"2.1.0", @"serverVersion", @"1.1.0", @"platform", @"iOS",..., nil];
NSDictionary * dataDict = [[NSDictionary alloc] initWithObjectsAndKeys:
@"userName", @"rrullo", @"password", @"rrullo!", nil];
NSDictionary * mainDict = [[NSDictionary alloc] initWithObjectsAndKeys:
@"data", dataDict, @"meta", metaDict, nil];
Now you can use NSJsonSerialization to convert that mainDict to a NSString
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:mainDict
options:NSJSONWritingPrettyPrinted
error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
Hope this helps