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;
|
||||||
+(NSArray*)readArrayFromArray:(NSArray*)array forIndex:(NSUInteger)index withDefaultValue:(NSArray* _Nullable)defaultValue;
|
+(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
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -175,4 +175,53 @@ BOOL coerceObjectToBool(NSObject *object, BOOL defaultValue) {
|
|||||||
return 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
|
@end
|
||||||
|
|||||||
@@ -594,4 +594,104 @@ NSArray* readJSONArrayFromString(NSString *jsonString) {
|
|||||||
XCTAssertEqualObjects(_jsonArrayValue, readValue);
|
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
|
@end
|
||||||
|
|||||||
Reference in New Issue
Block a user