• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 解析 JSON 和 AFNetworking

[复制链接]
菜鸟教程小白 发表于 2022-12-13 00:24:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用这样的 AFNetworking 工具使用 Web 服务:

NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    [self GotJSONSuccess:JSON :response ];
} failure: nil ];

[operation start];

Web 服务响应并给我以下 json:

[
{
    "statusid": 1,
    "statusdesc": "ASSIGNED"
},
{
    "statusid": 2,
    "statusdesc": "COMPLETED"
},
{
    "statusid": 3,
    "statusdesc": "IN TRANSIT"
},
{
    "statusid": 4,
    "statusdesc": "DELAYED"
},
{
    "statusid": 5,
    "statusdesc": "ON HOLD"
}
]

我正在使用以下内容尝试解析 json:

- (void)GotJSONSuccess: (NSString*) JSON : (NSHTTPURLResponse*) response
{

NSString *newString = [NSString stringWithFormat"%@",JSON];

NSLog(@"response: %@", JSON);
NSData* data = [newString dataUsingEncoding:NSUTF8StringEncoding];
NSError* error;
id jsonObjects = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

if (error){
    NSLog(@"error is %@", [error localizedDescription]);
    return;
}

NSArray *keys = [jsonObjects allKeys];

for (NSString *key in keys){
    NSLog(@"%@ is %@",key, [jsonObjects objectForKey:key]);
}
}

但是代码落入错误 block 并且输出是 “操作无法完成。(Cocoa 错误 3840。)”

我在解析这个简单的 json 时做错了什么?

有没有比我现在采用的更好的解析方法?

如果可能,我想坚持使用原生 iOS 类和方法进行解析。



Best Answer-推荐答案


您可以使用 NSJSONSerialization 类来创建这样的数组

NSArray *arr = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil];

然后对于您的每个状态 ID,您只需将索引编入数组并拉出字典:

NSDictionary *dict = [arr objectAtIndex:0];

最后一行会退出:`

{
    "statusid": 1,
    "statusdesc": "ASSIGNED"
}

然后您可以使用对象等方法作为字典的键。`

关于iOS 解析 JSON 和 AFNetworking,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267880/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap