自定义URL方案中的JSON数据

时间:2014-04-10 02:53:32

标签: ios objective-c json

在我的应用中,我正在创建一个共享功能,向另一个用户发送一封带有URL的电子邮件,以打开我的应用并传递参数。我用Google搜索了一下,然后想出了this.

我知道这是一个可怕的例子,但这就是我所能找到的。由于我需要传递一个NSNumber,一个NSDate和一个NSString,我认为这是最方便的方法。现在,我无法理解那段代码。我继续前进并获得了SBJson库,这是他似乎正在使用的。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您不必在iOS中使用库进行JSON序列化。从iOS 5.0开始,有一个类NSJSONSerialization可用于执行此操作。 https://developer.apple.com/library/ios/documentation/foundation/reference/nsjsonserialization_class/Reference/Reference.html

考虑将此代码转换为json字符串

+(NSString*) jsonStringRepresentationOfSelectedReceiptients:(NSArray*) contactsList {
  NSMutableArray* contactsArray = [[NSMutableArray alloc]init];
  for (ContactObject *contactObj in contactsList) {
        NSDictionary* ltPair = @{@"phone_no": [NSNumber numberWithLongLong:contactObj.phoneNo, @"email_id": contactObj.emailId, @"display_name": contactObj.displayName], @"creation_date": [NSDate dateWithTimeIntervalSince1970:contactObj.timeStamp]]};
        [contactsArray addObject:ltPair];
  }
  NSData *jsonData=[NSJSONSerialization dataWithJSONObject:contactsArray options:NSJSONWritingPrettyPrinted error:nil];
  NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  NSLog(@"json string: %@", recptJson);
  return jsonString;
}

如果你有适当的NSDate而不是时间戳,你可以直接使用它。 希望这会有所帮助。