IOS轉換和解析JSON資料

2021-07-11 05:34:38 字數 3089 閱讀 8493

在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 ...