說明:Alamofire請(qǐng)求服務(wù)器數(shù)據(jù) ,HandyJSON轉(zhuǎn)換JSON->Model
- 使用庫:
pod 'Alamofire', '~> 4.0.1' #用于請(qǐng)求服務(wù)器數(shù)據(jù)
pod 'HandyJSON', '~> 1.1.0' #用于Josn->Model
//特別說明:swift3.0版本cocopods Podfile文件結(jié)構(gòu)
platform:ios,'9.0'
use_frameworks!
target 'SwiftSaleEstate' do
pod 'Alamofire', '~> 4.0.1'
pod 'HandyJSON', '~> 1.1.0'
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0' ## or '3.0'
end
end
end
end
1.基本使用
//基本JSON -> Model
let jsonString = "{\"ResultNo\":0,\"Result\":{\"DealAvgPrice\":24520.61,\"RelativeRatio\":0,\"RelativeRatioPercent\":10.8368835360245,\"SaleNumber\":18101,\"RentNumber\":9611,\"GScopeId\":22,\"GScopeName\":\"天津\",\"GScopeLevel\":1,\"DealNumber\":1380,\"RentDealNumber\":1713,\"SaleAvgPrice\":25077.7149111487,\"DataMonth\":9},\"Total\":0}"
if let jsonEntity = JSONDeserializer<EstateAreaRegionResponseEntity>.deserializeFrom(json: jsonString) {
print(jsonEntity.Total)
print(jsonEntity.ResultNo)
print(jsonEntity.Result?.GScopeName)
}
//Alamofire請(qǐng)求及JSON->Model
let url = GlobalRequestUrl.requestGetGScopeLastMonthDealInfoUrl
Alamofire.request(url, method: .get, parameters: ["GScopeId":"011","GScopeLevel":"1"]).responseString { response in
if let JSON = response.result.value {
if let jsonEntity = JSONDeserializer<EstateAreaRegionResponseEntity>.deserializeFrom(json: JSON) {
print(jsonEntity.Total)
print(jsonEntity.ResultNo)
print(jsonEntity.Result?.GScopeName)
}
}
}
- EstateAreaRegionResponseEntity結(jié)構(gòu)體
import HandyJSON
struct EstateAreaRegionEntity: HandyJSON {
var DataMonth:Int?
var DealAvgPrice:Double?
var DealNumber:Int?
var GScopeId:Int?
var GScopeLevel:Int?
var GScopeName:String?
var RelativeRatio:Double?
var RelativeRatioPercent:Double?
var RentDealNumber:Int?
var RentNumber:Int?
var SaleAvgPrice:Double?
var SaleNumber:Int?
}
struct EstateAreaRegionResponseEntity: HandyJSON {
var ResultNo:Int?
var Total:Int?
var Result:EstateAreaRegionEntity?
}
2.自定義解析方式
- HandyJSON還提供了一個(gè)擴(kuò)展功能陕凹,允許自行定義Model類某個(gè)字段的解析Key恳不、解析方式檩小。
如:某個(gè)Model中,我們不想使用和服務(wù)端約定的key作為屬性名烟勋,可以自定義一個(gè)
import HandyJSON
struct EstateAreaRegionEntity: HandyJSON {
var DataMonth:Int?
var DealAvgPrice:Double?
var DealNumber:Int?
var GScopeId:Int?
var GScopeLevel:Int?
var GScopeName:String?
var RelativeRatio:Double?
var RelativeRatioPercent:Double?
var RentDealNumber:Int?
var RentNumber:Int?
var SaleAvgPrice:Double?
var SaleNumber:Int?
}
struct EstateAreaRegionResponseEntity: HandyJSON {
var resultNo:Int?
var total:Int?
var result:EstateAreaRegionEntity?
//自定義解析方式
mutating func mapping(mapper: HelpingMapper) {
mapper.specify(property: &resultNo, name: "ResultNo")
mapper.specify(property: &total, name: "Total")
mapper.specify(property: &result, name: "Result")
}
}