iOS网络数据解析之JSON解析

  • JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,易于阅读和编写,同时也易于机器解析和生成
  • JSON文件有两种结构:
    1 对象:"名称/值"对的集合,以"{"开始,以"}"结束,名称和值中间用":"隔开
    2 数组:值的有序列表,以"["开始,以"]"结束,中间是数据,数据以","分隔
    (JSON中的而数据类型:字符串、数值BOOL、对象、数组)
    例如:
    {
    "reason": "success",
    "result": [
    {
    "movieId": "215977",
    "movieName": "森林孤影",
    "pic_url": "http://v.juhe.cn/movie/picurl?2583247"
    },
    {
    "movieId": "215874",
    "movieName": "从哪来,到哪去",
    "pic_url": "http://v.juhe.cn/movie/picurl?2583542"
    },
    {
    "movieId": "215823",
    "movieName": "有一天",
    "pic_url": "http://v.juhe.cn/movie/picurl?2583092"
    }
    ],
    "error_code": 0
    }
使用Foundation进行JSON解析

第一步:获取JSON文件路径
第二步:转换为NSData类型
第三步:解析JSON数据
代码如下:
<pre><code>

  • (void)jsonParser {

    //step1:文件路径

    NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"MovieList" ofType:@"txt"];

    //step2:转换为NSData类型

    NSData *jsonData = [NSData dataWithContentsOfFile:jsonPath];

    //step3.解析json数据

    NSError *error;

    //第二个参数:

    //NSJSONReadingMutableContainers = (1UL << 0),解析完成返回的为可变的数组或者字典类型。

    //NSJSONReadingMutableLeaves = (1UL << 1),解析完成返回的类型为NSMutableString,在iOS7及其以上不太好用。

    //NSJSONReadingAllowFragments = (1UL << 2)允许json串最外层既不是数组也不是字典,但必须是有效的json片段,例如json串可以是一段字符串。

    NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];

    if (resultDic) {//判断解析是否得到正常数据
    //判断当前对象是否支持json格式
    if([NSJSONSerialization isValidJSONObject:resultDic]){
    //将字典转换为json串
    NSData *strData = [NSJSONSerialization dataWithJSONObject:resultDic options:NSJSONWritingPrettyPrinted error:&error];
    //判断strData是否有值
    if (strData) {
    //将data转换为字符串
    NSString *str = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
    NSLog(@"%@",str);
    }
    }
    }
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,253评论 19 139
  • iOS网络编程读书笔记 Facade Tester客户端门面模式的实例(被动版本化) 被动版本化,所以硬编码URL...
    melouverrr阅读 1,657评论 3 7
  • 周五那天笔试过了,回到了家,今天再次踏上去厦门的路,这次是我一个月以来第三次去厦门了,也是最后一次,一个月三顾厦门...
    夏十里阅读 160评论 0 0
  • 《知识大融通》是被誉为“当代达尔文”、“知识巨人”的爱德华•威尔逊所著,它还有个副标题叫“二十一世纪的科学与人文”...
    蕙茝_如常阅读 7,133评论 5 10
  • 秋风清,秋月明, 落叶聚还散,寒鸦栖复惊 相思相见知何日,此时此夜难为情。
    达鲁花赤阅读 217评论 0 0