Adds JSONHelper methods to make parsing json from strings and NSData objects easier.
This commit is contained in:
@@ -38,6 +38,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
+(NSArray*)readArrayFromArray:(NSArray*)array forIndex:(NSUInteger)index;
|
||||
+(NSArray*)readArrayFromArray:(NSArray*)array forIndex:(NSUInteger)index withDefaultValue:(NSArray* _Nullable)defaultValue;
|
||||
|
||||
+(id)parseJSONString:(NSString*)jsonString;
|
||||
+(NSDictionary*)parseJSONStringAsDictionary:(NSString*)jsonString;
|
||||
+(NSArray*)parseJSONStringAsArray:(NSString*)jsonString;
|
||||
|
||||
+(id)parseJSONData:(NSData*)jsonData;
|
||||
+(NSDictionary*)parseJSONDataAsDictionary:(NSData*)jsonData;
|
||||
+(NSArray*)parseJSONDataAsArray:(NSData*)jsonData;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -175,4 +175,53 @@ BOOL coerceObjectToBool(NSObject *object, BOOL defaultValue) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
+(id)parseJSONString:(NSString*)jsonString {
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSArray *jsonRoot = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
|
||||
return jsonRoot;
|
||||
}
|
||||
|
||||
+(NSDictionary*)parseJSONStringAsDictionary:(NSString*)jsonString {
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSDictionary *jsonRoot = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
|
||||
if (![jsonRoot isKindOfClass:[NSDictionary class]]) {
|
||||
return nil;
|
||||
} else {
|
||||
return jsonRoot;
|
||||
}
|
||||
}
|
||||
|
||||
+(NSArray*)parseJSONStringAsArray:(NSString*)jsonString {
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSArray *jsonRoot = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
|
||||
if (![jsonRoot isKindOfClass:[NSArray class]]) {
|
||||
return nil;
|
||||
} else {
|
||||
return jsonRoot;
|
||||
}
|
||||
}
|
||||
|
||||
+(id)parseJSONData:(NSData*)jsonData {
|
||||
NSArray *jsonRoot = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
|
||||
return jsonRoot;
|
||||
}
|
||||
|
||||
+(NSDictionary*)parseJSONDataAsDictionary:(NSData*)jsonData {
|
||||
NSDictionary *jsonRoot = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
|
||||
if (![jsonRoot isKindOfClass:[NSDictionary class]]) {
|
||||
return nil;
|
||||
} else {
|
||||
return jsonRoot;
|
||||
}
|
||||
}
|
||||
|
||||
+(NSArray*)parseJSONDataAsArray:(NSData*)jsonData {
|
||||
NSArray *jsonRoot = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
|
||||
if (![jsonRoot isKindOfClass:[NSArray class]]) {
|
||||
return nil;
|
||||
} else {
|
||||
return jsonRoot;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -594,4 +594,104 @@ NSArray* readJSONArrayFromString(NSString *jsonString) {
|
||||
XCTAssertEqualObjects(_jsonArrayValue, readValue);
|
||||
}
|
||||
|
||||
#pragma mark - JSON parsing
|
||||
|
||||
- (void)testParseJSONDataReturnsDictionary {
|
||||
NSString *jsonString = @"{\"a\":1,\"b\":2}";
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONData:jsonData];
|
||||
XCTAssertNotNil(parsedResult);
|
||||
XCTAssertTrue([parsedResult isKindOfClass:[NSDictionary class]]);
|
||||
}
|
||||
|
||||
- (void)testParseJSONDataReturnsArray {
|
||||
NSString *jsonString = @"[\"a\",1,\"b\",2]";
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONData:jsonData];
|
||||
XCTAssertNotNil(parsedResult);
|
||||
XCTAssertTrue([parsedResult isKindOfClass:[NSArray class]]);
|
||||
}
|
||||
|
||||
- (void)testParseJSONDataAsDictionaryReturnsDictionary {
|
||||
NSString *jsonString = @"{\"a\":1,\"b\":2}";
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
NSDictionary *parsedResult = [JSONHelper parseJSONDataAsDictionary:jsonData];
|
||||
XCTAssertNotNil(parsedResult);
|
||||
XCTAssertTrue([parsedResult isKindOfClass:[NSDictionary class]]);
|
||||
}
|
||||
|
||||
- (void)testParseJSONDataAsDictionaryReturnsNilIfNotDictionary {
|
||||
NSString *jsonString = @"[\"a\",1,\"b\",2]";
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONDataAsDictionary:jsonData];
|
||||
XCTAssertNil(parsedResult);
|
||||
}
|
||||
|
||||
- (void)testParseJSONDataAsArrayReturnsArray {
|
||||
NSString *jsonString = @"[\"a\",1,\"b\",2]";
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONDataAsArray:jsonData];
|
||||
XCTAssertNotNil(parsedResult);
|
||||
XCTAssertTrue([parsedResult isKindOfClass:[NSArray class]]);
|
||||
}
|
||||
|
||||
- (void)testParseJSONDataAsArrayReturnsNilIfNotArray {
|
||||
NSString *jsonString = @"{\"a\":1,\"b\":2}";
|
||||
NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONDataAsArray:jsonData];
|
||||
XCTAssertNil(parsedResult);
|
||||
}
|
||||
|
||||
- (void)testParseJSONStringReturnsDictionary {
|
||||
NSString *jsonString = @"{\"a\":1,\"b\":2}";
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONString:jsonString];
|
||||
XCTAssertNotNil(parsedResult);
|
||||
XCTAssertTrue([parsedResult isKindOfClass:[NSDictionary class]]);
|
||||
}
|
||||
|
||||
- (void)testParseJSONStringReturnsArray {
|
||||
NSString *jsonString = @"[\"a\",1,\"b\",2]";
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONString:jsonString];
|
||||
XCTAssertNotNil(parsedResult);
|
||||
XCTAssertTrue([parsedResult isKindOfClass:[NSArray class]]);
|
||||
}
|
||||
|
||||
- (void)testParseJSONStringAsDictionaryReturnsDictionary {
|
||||
NSString *jsonString = @"{\"a\":1,\"b\":2}";
|
||||
|
||||
NSDictionary *parsedResult = [JSONHelper parseJSONStringAsDictionary:jsonString];
|
||||
XCTAssertNotNil(parsedResult);
|
||||
XCTAssertTrue([parsedResult isKindOfClass:[NSDictionary class]]);
|
||||
}
|
||||
|
||||
- (void)testParseJSONStringAsDictionaryReturnsNilIfNotDictionary {
|
||||
NSString *jsonString = @"[\"a\",1,\"b\",2]";
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONStringAsDictionary:jsonString];
|
||||
XCTAssertNil(parsedResult);
|
||||
}
|
||||
|
||||
- (void)testParseJSONStringAsArrayReturnsArray {
|
||||
NSString *jsonString = @"[\"a\",1,\"b\",2]";
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONStringAsArray:jsonString];
|
||||
XCTAssertNotNil(parsedResult);
|
||||
XCTAssertTrue([parsedResult isKindOfClass:[NSArray class]]);
|
||||
}
|
||||
|
||||
- (void)testParseJSONStringAsArrayReturnsNilIfNotArray {
|
||||
NSString *jsonString = @"{\"a\":1,\"b\":2}";
|
||||
|
||||
id parsedResult = [JSONHelper parseJSONStringAsArray:jsonString];
|
||||
XCTAssertNil(parsedResult);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user