在ios開發中常用到使用json資料向伺服器傳送請求和接收資料,本例使用ios5自帶解析類nsjsonserialization方法解析,無需匯入包,ios5支援,但是低版本ios不支援。
1.首先建立資料模型
// mydata.h
#import
#import "srtcjsonobject.h"
@inte***ce
mydata : nsobject
@property (nonatomic, strong) nsstring *userid;
@property (nonatomic, strong) nsstring *username;
@property (nonatomic, strong) nsmutablearray *myrecords;
@end
myrecord是record型別的陣列
// record.h
#import
#import "srtcjsonobject.h"
@inte***ce
record : nsobject
@property (nonatomic, strong) nsstring *id;
@property (nonatomic, strong) nsstring *date;
@property (nonatomic, strong) nsstring *content;
@end
2.json轉換和解析方法
在srtcjsonobject類裡面宣告json轉換的方法
#import
@protocol
srtcjsonobject
@optional - (nsdata *) tojson;
@optional - (nsdictionary *) tojsondictionary;
@optional - (void) fromjson:(nsdata *)jsondata;
@optional - (void) fromjsondictionary:(nsdictionary *)jsondict;
@end
mydata.m裡實現tojson和fromjson
// mydata.m
#import "mydata.h"
#import "record.h"
#define check_nil(value) ((value) == nil ? (@"") : (value))
@implementation
mydata
- (nsdata *) tojson ];
}//mydata轉換為json字典
nsdictionary *jsondict = [nsdictionary dictionarywithobjectsandkeys:
check_nil(self
.userid), @"userid",
check_nil(self
.username), @"username",
check_nil(recordarray), @"recordarray",
nil];
nserror *error = nil;
nsdata *jsondata = nil;
if ([nsjsonserialization isvalidjsonobject:jsondict])
return jsondata;
}- (void) fromjson:(nsdata *)jsondata else
if ([key isequaltostring:@"username"]) else
if ([key isequaltostring:@"recordarray"]) ];}}
}];}
}}@end
record.m裡實現tojsondictionary和fromjsondictionary
// record.m
#import "record.h"
#define check_nil(value) ((value) == nil ? (@"") : (value))
@implementation
record
- (nsdictionary *) tojsondictionary
- (void) fromjsondictionary:(nsdictionary *)jsondict else
if ([key isequaltostring:@"date"]) else
if ([key isequaltostring:@"content"])
}];}
}@end
3.建立資料轉換json並解析
在viewcontroller.m的viewdidload方法中測試解析方法:
- (void)viewdidload ];
}
4.輸出結果
//jsondata
2016-04-15 17:06:25.654 jsonparsedemo[3586:60b] ,
]}//resultdata
2016-04-15
17:06:25.660 jsonparsedemo[3586:60b] userid: 1001
2016-04-15
17:06:25.662 jsonparsedemo[3586:60b] username: user
2016-04-15
17:06:25.664 jsonparsedemo[3586:60b] record0: id: 1; date: 2015-04-11;
content
: abc;
2016-04-15 17:06:25.666 jsonparsedemo[3586:60b] record1: id: 1; date: 2015-04-11;
content
: efg;
Json資料封裝和解析
新增dll引用 右鍵專案 新增引用 net 選擇 c program files x86 reference assemblies microsoft framework v3.0 system.runtime.serialization.dll c program files x86 refere...
JSON資料造假和解析
客戶端開發通常要從伺服器獲取資料,所以就需要呼叫後台的介面,然後獲得後台返回的資料,根據這些資料的格式進行json解析。由於後台返回的資料會有不同的格式,所以前端也要採取不同的json.parse 方法進行解析。首先,來講一下json資料。簡單的json資料就像下面這種,我們稱之為名稱 鍵對 我們在...
IOS中JSON資料解析
官方為我們提供的解析json資料的類是 nsjsonserialization,首先我們先來看下這個類的幾個方法 bool isvalidjsonobject id obj 判斷乙個資料物件是否可以轉化為json資料 nsdata datawithjsonobject id obj options ...