文档章节

OC的json数据解析

鹿微微鹿
 鹿微微鹿
发布于 2016/04/01 19:45
字数 651
阅读 151
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

FJModel.h


#import <Foundation/Foundation.h>


//模型类,专门用来存储数据的类

@interface FJModel : NSObject

//用他的属性来存存储数据


//存储json解析的简介;

@property (nonatomic,copy) NSString *intro;

//标题

@property (nonatomic,copy) NSString *title;

//来源

@property (nonatomic,copy) NSString *source;

//长标题

@property (nonatomic,copy) NSString *long_title;


//通过字典去初始化模型(给模型属性赋值)

- (instancetype) initWithDict :(NSDictionary *)dict;




@end


FJMOdel.m

#import "FJModel.h"


@implementation FJModel


- (NSString *)description{

    

    return [NSString stringWithFormat:@"%@ %@ %@ %@",_intro,

            _title,_long_title,_source];

}



- (instancetype)initWithDict:(NSDictionary *)dict{

    

    if (self = [super init]) {

        //使用解析到的字典的值,给模型对应的成员变量赋值

        _intro = dict[@"intro"];

        

        _title = dict[@"title"];

        

        _long_title = dict[@"long_title"];

        

        _source = dict[@"source"];

        

    }

    return self;

}

@end


main.m

#import <Foundation/Foundation.h>

#define PATH @"http://yuting.local/shareX/qiushi.json"

#define PATH1 @"http://yuting.local/shareX/sina.json"

#import "FJModel.h"

void test1();

void test2();

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        

        

        test2();

    }

    return 0;

}

//获取json数据中多个字段的值

#pragma mark 获取json数据中多个字段的值

void test2(){

    

    //1.从网络上获取json数据

    NSURL *url = [NSURL URLWithString:PATH1];

    NSData *data = [NSData dataWithContentsOfURL:url];

    

    //2.解析json数据,

    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

    

    //取出字典下面的字典的数组;

    NSArray *listArray = dict[@"data"][@"list"];

   

    //用来存储模型的数组;

    NSMutableArray *dataArray = [NSMutableArray array];

    

    //遍历数组拿到的所有字典;

    for (NSDictionary *ndict in listArray) {

        

        

        //=============不推荐这么做===============

        //初始化一个模型来存储字典中需要存储的数据;

       // FJModel *model = [[FJModel alloc]init];

     

        //将需要存储的字段,放到对应的属性中;

        //        model.intro = ndict[@"intro"];

        //

        //        model.title = ndict[@"title"];

        //

        //        model.long_title = ndict[@"long_title"];

        //

        //        model.source = ndict[@"source"];


        //============推荐使用==============

        

        FJModel *model = [[FJModel alloc] initWithDict:ndict];

        

        //将模型的数据存储起来

        [dataArray addObject:model];

    }

   

    for (FJModel *model in dataArray) {

        

        NSLog(@"%@",model);

        

    }

    

    

    

    

    

}


//获取json数据中某一个字段的值

#pragma mark 获取json数据中某一个字段的值

void test1(){

    

    //1.从网络中获取json数据

    

    NSURL * url = [NSURL URLWithString:PATH];

    NSData * data = [NSData dataWithContentsOfURL:url];

    //NSLog(@"%@",data);

    //2.解析json数据;(前提是:要知道要解析的数据的数据是什么样的.

    //json数据最外层要么是字典要么是数组;

    //NSJSONSerialization就是最好的json解析工具;

    //参数一:需解析的数据;

    //参数二:告诉json解析工具需要返回什么样的数据;

    //  NSJSONReadingMutableContainers 可变容器(数组或者字典)

    // NSJSONReadingMutableLeaves  可变的字符串

    // NSJSONReadingAllowFragments 有效json片段

    

    //返回值:返回值具体是什么类型,要看json数据的最外层到底是什么!

    NSDictionary *dict   =   [NSJSONSerialization JSONObjectWithData:data

                                                             options:NSJSONReadingMutableContainers error:nil];

    

    // NSLog(@"%@",dict);

    

    //拿到数组

    NSArray *items = dict[@"items"];

    //遍历数组,拿到所有的字典

    for (NSDictionary *tdict in items) {

        //拿到所有字典的content内容;

        NSString *content = tdict[@"content"];

        

        NSLog(@"%@",content);

        

    }

    

    

}



© 著作权归作者所有

鹿微微鹿
粉丝 8
博文 116
码字总数 71882
作品 0
程序员
私信 提问
iOS:JSON转OC属性小工具

iOS:JSON转OC属性小工具 在iOS开发中,只要有网络模块,就需要数据模型的编写。在进行数据模型的解析和映射时,JSONModel是一个非常常用且优秀的第三方框架,之前有有过博客对其分析,地址如...

珲少
2018/06/09
284
0
json 和xml 数据解析

使用NSURLConnection来请求数据 JSON数据的请求 现在大多情况下都使用三方框架来完成的 l在iOS中,JSON的常见解析方案有4种 p第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差)...

codeShuai
2016/04/19
0
0
Swift-使用NSJSONSerialization生成或解析JSON数据

NSJSONSerialization是iOS5中增加的解析JSON的API. NSJSONSerialization提供了将JSON数据转换为Foundation对象(一般都是NSDictionary和NSArray)和 Foundation对象转换为JSON数据. 在将Fou...

王永濤
2015/10/27
514
0
OC中解析对象(json)

解析对象(json) 1.大括号代表字典 2.中括号(小括号)代表数组 3.冒号的左右两边分别为键和值(key:value) 4.数据和数据之间用逗号隔开 解析方法一: #import <Foundation/Foundation.h> im...

Dumplings
2016/03/31
169
0
iOS中FlatBuffers的使用

文章首发于个人blog 欢迎指正补充,可联系lionsom_lin@qq.com 原文地址:iOS中FlatBuffers的使用 官方文档 GitHub - Google / flatbuffers FlatBuffer官网 iOS 相关Demo FlatBuffers-ObjC N...

lionsom_lin
2018/08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在C语言中“静态”是什么意思?

我已经在C代码的不同地方看到了static一词。 这就像C#中的静态函数/类(实现在对象之间共享)吗? #1楼 多文件变量作用域示例 在这里,我说明了静态如何影响多个文件中函数定义的范围。 交流...

javail
6分钟前
3
0
利用 FC + OSS 快速搭建 Serverless 实时按需图像处理服务

作者:泽尘 简介 随着具有不同屏幕尺寸和分辨率设备的爆炸式增长,开发人员经常需要提供各种尺寸的图像,从而确保良好的用户体验。目前比较常见的做法是预先为一份图像存放多份具有不同尺寸的...

阿里巴巴云原生
8分钟前
2
0
前端架构最佳实践

Folders-by-Feature Structure 胜过 Folders-by-Type Structure

lilugirl
19分钟前
3
0
Seata AT 模式启动源码分析

从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM、TM、TC),接下来我会更新 Seata 源码分析系列文章。今天就来分...

后端进阶
20分钟前
3
0
Python中“自我”一词的目的是什么?

Python中self词的目的是什么? 我知道它是指从该类创建的特定对象,但是我看不到为什么要将它显式地作为参数添加到每个函数中。 为了说明这一点,在Ruby中,我可以这样做: class myClass ...

技术盛宴
22分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部