iOS中将后台JSON数据转化为模型的总结

1.

再拿到了Json数据后怎么把字典写到数组里面去呢?

  方法1:用最原始的方法  

  

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

if(self = [super init]) {

[self setValuesForKeysWithDictionary:dict];

}

return self;

}

+(instancetype)modelWithDict:(NSDictionary *)dict {

return [[self alloc] initWithDict:dict];

}

//这个方法一定要写上  ,不然就回报警告的,什么警告呢? undefiedforKey

- (void)setValue:(id)value forUndefinedKey:(NSString *)key

{

}

这行代码的作用就是为了避免在你的json‘数据的字典在很多个的情况下  然后呢你的.h文件里面可能只有几个字段 而并没有吧json数据里面的全部字段用上的时候这个时候这个就起作用了,这行代码的就可以把多余的字段因为没有一一的键值对应给忽略了

比如这个时候json数据的层级结构是这样的

{
  "result": true,
  "page": 1,
  "totalPage": 1,
  "dicMap": {},
  "varList": [
    {},
    {}
  ]
}

//

你可以这样去解析数据

    NSArray *data  = dict[@"varList"];

for(NSDictionary *dict3 in data) {

ZYGuess *guess = [ZYGuess modelWithDict:dict3];

NSLog(@" -----==%@=========",guess);

}

方法2,使用JSONModel框架   

使用说明 :

这个是我建立的模型层次结构

#import "JSONModel.h"

#import "ZYCarouselList.h"

#import "ZYSpecialList.h"

#import "ZYHotSaleList.h"

#import "ZYGuessList.h"

@interface ZYHomeModel : JSONModel

@property (nonatomic,strong) ZYCarouselList *carousel;

@property (nonatomic,strong) ZYSpecialList *special;

@property (nonatomic,strong) ZYHotSaleList *sale;

@property (nonatomic,strong) ZYGuessList *guess;

关键就在这个地方出错了,因为他们这个json数据它们是没有并列的层级关系、

我现在拿到的json数据只是一个接口的数据

@property (nonatomic,strong) ZYCarouselList *carousel;

@property (nonatomic,strong) ZYSpecialList *special;

@property (nonatomic,strong) ZYHotSaleList *sale;

和着3个没有一点的关系

层级结构错了   所以打印出来的模型一直为null

ZYGuessList *model = [[ZYGuessList alloc]initWithDictionary:dict error:NULL];

NSLog(@"%@",model);

这个时候就可以直接转为模型了

时间: 2024-10-03 14:03:01

iOS中将后台JSON数据转化为模型的总结的相关文章

JSON数据转化成模型

JSON数据转化成模型 // 1.创建url NSURL *url = kSUNUrl(@"video"); // 2.创建request NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 3.发送请求数据 NSOperationQueue *queue = [NSOperationQueue mainQueue]; [NSURLConnection sendAsynchronousRequest:request

json数据转化成模型对象

具体思想: 1.将模型对象的属性名和属性类型的创建规则  应与json数据的key-value一一对应. 2.在模型对象初始化之前,给模型对象的每一个属性名赋默认的值.比较 NSString类型默认赋值@"",NSNumber默认赋值 [NSNull null] 3.以json数据的key作为属性名,value作为值给模型数据一一赋值. 有三个重要的方法: // 获取类的所有Property 1. objc_property_t *class_copyPropertyList(Clas

把json数据转化成对象

把json数据转化到一个对象中,再用对象直接调用 1 package com.lxj.register; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.net.MalformedURLException; 7 import java.net.URL; 8 9 import net.sf.json.JSONObjec

jQuery通过ajax获得后台json数据给form表单赋值

jQuery提供了load方法可以将数据加载到页面form表单中,但有时候我需要获取后台json数据中某个值时,又需要赋值整个form表单,load方法没有回调函数所以就不行了,如果用ajax调用的话,获得后台json数据后把json数据分析出来在一个个的赋值到form表单的每个文本框中,这样未免太过复杂和太多代码,所以我根据了一些大神的回答,总结了一个很好用的jQuery函数. jQuery-load方法调用: $('#form').form('load',URL); 页面表单: <span

iOS开发——XML/JSON数据解析

除了XML和Json,文中还涉及到的一些知识:第三方类库的使用,获取本地文件内容,网站API使用,GCD多线程编程,不做详细介绍,在代码出现的地方会注明. 先安利一波: Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特定的数据结构,必须对其进行解析,得到我们可以处理的数据.所谓“解析”,就是从事先规定好的格式串中提取数据.解析的前提是数据的提供方

json数据转化及应用

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON建构于两种结构: 1. “名称/值”对的集合(A collection of name/value pairs).不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array). 2. 值的有序列表(An ordered

在ios中解析json数据

刚刚下午那会 弄了个 解析 xml  demo的小例子,本想着json也挺复杂 弄还是 不弄,但是简单的看了下 发现挺简单 考虑了很久,还是写上来吧,毕竟json用得太多了,而且算是自己的积累吧,毕竟刚开始学习IOS开发方面的知识,就当是巩固了撒! 还是 先看个效果图吧,如下! 接下来 看下工程目录吧,其实并没有必要,直接建立一个工程就行 ,算了,还是贴上来吧,如下: 工程目录中有个 Notes.json 文件,该文件就是 要解析的json数据了 ,也截下图吧,如下: Ok ,以上准备完毕,就开

【Gson】网页上String获取的Json数据转化为对象

1.网络上获取的String Json格式转化为对象获取数据: 需要的包:Gson Maven依赖: 1 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> 2 <dependency> 3 <groupId>com.google.code.gson</groupId> 4 <artifactId>gson</artifactId> 5 <v

Java后台JSON数据的使用

1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( "second" ); JSONArray jsonArray2 = JSONArray.fromObject( list ); 2. Map集合转换成json代码 Map map = new HashMap(); map.put("name", "json"); map