我正在使用 AFNetworking 2 从服务器获取一些 json 数据。它是员工数据,我制作了一个员工对象和一个员工 NSMutableArray。
我的服务正在运行。如果我将 responseObject 输出到日志中,我会得到 600 名员工。我正在苦苦挣扎的是如何将它们放入我的员工 NSMutableArray。
responseObject 有一个 id 类型,意思是一个没有类的对象,对吧?我试图将 id 更改为 employee,因为这是我想要返回的,但没有用。然后我注意到 responseObject 实际上是所有对象,所以我尝试了 employees 但没有用。
所以我想我可以遍历对象,但由于它不是真正的 NSMutableArray 我不明白如何做。
如有任何帮助,我们将不胜感激。
布莱恩
- (IBAction)jsonTapped:(id)sender
{
NSMutableArray *employees;
employee *thisEmployee = [employee new];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"XXXXXX" password:@"XXXXXX"];
AFHTTPRequestOperation *operation = [manager GET: @"https:/XXXXXXXXXXX/something"
parameters: [self jsonDict]
success:^(
AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"Submit response data: %@", responseObject);}
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"Error: %@", error);}
];
[operation start];
}
这是我的成功集团内部:
NSMutableArray *employees = (NSMutableArray *)responseObject;
NSLog(@"Count of array to begin: %lu", (unsigned long)[employees count]);
NSLog(@"JSON RESULT %@", responseObject);
FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
[db open];
for (employee *thisemployee in employees) {
BOOL success = [db executeUpdate:@"INSERT INTO employees (firstName,fullName,email) VALUES (?,?,?,?);",thisemployee.firstName,thisemployee.lastName,thisemployee.fullName,thisemployee.emailAddress, nil];
if (success) {} // Only to remove success error
NSLog(@"DDD %@", thisemployee);
最佳答案
您只需要在 success
block 中获取 responseObject 并将其转换为数组,如下所示:
NSArray *employees = (NSArray *)responseObject;
AFNetworking 已经为您解析了 Json。您需要做的只是根据您的响应类型(可能是数组)转换为 NSArray
或 NSDictionary
。
关于ios - 使用 AFNetworking 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749663/