PPOTJSONHelper.m 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //
  2. // PPOTJSONHelper.m
  3. // PayPalOneTouch
  4. //
  5. // Copyright © 2015 PayPal, Inc. All rights reserved.
  6. //
  7. #import "PPOTJSONHelper.h"
  8. #import "PPOTString.h"
  9. @implementation PPOTJSONHelper
  10. + (NSString *)stringFromDictionary:(NSDictionary *)dictionary withKey:(NSString *)key {
  11. NSString *string = nil;
  12. if ([dictionary[key] isKindOfClass:[NSString class]]) {
  13. string = dictionary[key];
  14. }
  15. return string;
  16. }
  17. + (NSDictionary *)dictionaryFromDictionary:(NSDictionary *)dictionary withKey:(NSString *)key {
  18. NSDictionary *dict = nil;
  19. if ([dictionary[key] isKindOfClass:[NSDictionary class]]) {
  20. dict = dictionary[key];
  21. }
  22. return dict;
  23. }
  24. + (NSArray *)arrayFromDictionary:(NSDictionary *)dictionary withKey:(NSString *)key {
  25. NSArray *array = nil;
  26. if ([dictionary[key] isKindOfClass:[NSArray class]]) {
  27. array = dictionary[key];
  28. }
  29. return array;
  30. }
  31. + (NSArray *)stringArrayFromDictionary:(NSDictionary *)dictionary withKey:(NSString *)key {
  32. NSArray *array = [PPOTJSONHelper arrayFromDictionary:dictionary withKey:key];
  33. for (id item in array) {
  34. if (![item isKindOfClass:[NSString class]]) {
  35. return nil;
  36. }
  37. }
  38. return array;
  39. }
  40. + (NSArray *)dictionaryArrayFromDictionary:(NSDictionary *)dictionary withKey:(NSString *)key {
  41. NSArray *array = [PPOTJSONHelper arrayFromDictionary:dictionary withKey:key];
  42. for (id item in array) {
  43. if (![item isKindOfClass:[NSDictionary class]]) {
  44. return nil;
  45. }
  46. }
  47. return array;
  48. }
  49. + (NSString *)base64EncodedJSONStringWithDictionary:(NSDictionary*)dictionary {
  50. NSData *json = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:nil];
  51. if ([json length]) {
  52. return [PPOTString stringByBase64EncodingData:json];
  53. }
  54. else {
  55. return @"";
  56. }
  57. }
  58. + (NSDictionary *)dictionaryWithBase64EncodedJSONString:(NSString*)base64String {
  59. NSData *data = [PPOTString decodeBase64WithString:base64String];
  60. if ([data length]) {
  61. return [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
  62. }
  63. else {
  64. return @{};
  65. }
  66. }
  67. + (NSNumber *)numberFromDictionary:(NSDictionary *)dictionary withKey:(NSString *)key {
  68. NSNumber *number = nil;
  69. if ([dictionary[key] isKindOfClass:[NSNumber class]]) {
  70. number = dictionary[key];
  71. } else {
  72. NSString *stringNumber = [self stringFromDictionary:dictionary withKey:key];
  73. if (stringNumber.length) {
  74. NSNumberFormatter *formatter = [NSNumberFormatter new];
  75. number = [formatter numberFromString:stringNumber];
  76. }
  77. }
  78. return number;
  79. }
  80. @end