Swift JSON 项目数组
Swift JSON Array of items
大家好,我有一个问题。我在 swift 中使用 JSON 来获取有关用户的信息,因此响应是:
{
"user_details": {
"name":"samsun",
"email_id":"charchit2@ymail.com",
"mobile":"9503322593",
"phone":"NA",
"phone_os":"NA",
"devicetoken":"",
"city":"Mumbai",
"state":"Maharashtra",
"DOB":"0000-00-00",
"gender":"Female",
"address":"Shanti apts, A105",
"pinCode":"400068",
"isRegistered":"verified",
"imei":""
},
"vehicles": {
"1": {
"vechicle_no":"MH03AW0001",
"model_no":"Alto 800",
"variant":"LXI",
"color":"White",
"date_of_purchase":"10/10/2014",
"insurance_company_name":"Bajaj",
"insurance_expiry_date":"10/10/2015",
"created_at":"2015-06-02 23:31:30",
"fuelType":"CNG",
"vinNumber":"HSJHFJ10"
},
"2": {
"vechicle_no":"MH48S8403",
"model_no":"Swift",
"variant":"VXI",
"color":"AZURA GREY",
"date_of_purchase":"17/10/2007",
"insurance_company_name":"NEW INDIA",
"insurance_expiry_date":"17/10/2007",
"created_at":"2015-06-27 22:22:57",
"fuelType":"Petrol",
"vinNumber":"ABCD0316"
}
},
"status":"1",
"verified":"true"
}
好的,现在我需要保存车号(vehicle_no)但是因为有不同的用户我需要保存,比如第一个车号,第二个车号,第三个车号等等。所以例如这个用户有两个车号,我可以看到它,因为在“2”之后有第二个车号。那么我怎样才能得到两个车号呢?我还需要能够读取第三个、第四个 exc.. 车辆号码(如果用户有此号码)。对不起,如果我没有解释清楚,但提前谢谢你。
这是我现在的 jSON 代码。
func MyVehicleInfo() {
let Mobile = save.stringForKey("USERNAME")!
let post:NSString = "mobile=9503322593"
NSLog("PostData: %@",post);
let url:NSURL = NSURL(string: "http://saimobileapp.com/services/sai_authenticate.php")!
let postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!
let postLength:NSString = String( postData.length )
let request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postData
request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
var reponseError: NSError?
var response: NSURLResponse?
var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)
println(urlData)
if ( urlData != nil ) {
let res = response as! NSHTTPURLResponse!;
NSLog("Response code: %ld", res.statusCode);
if (res.statusCode >= 200 && res.statusCode < 300)
{
let responseData:NSString = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!
NSLog("Response ==> %@", responseData);
var error: NSError?
let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as! NSDictionary
let vehiclenodb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["vechicle_no"]! as! String
let modelnodb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["model_no"]! as! String
let variantdb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["variant"]! as! String
let colordb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["color"]! as! String
let datepurchasedb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["date_of_purchase"]! as! String
let insurancecompanynamedb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["insurance_company_name"]! as! String
let insuranceexpirydatedb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["insurance_expiry_date"]! as! String
let fueltypedb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["fuelType"]! as! String
//var emaildb = ((jsonData as NSDictionary)["user_details"] as! NSDictionary) ["email_id"] as! String
var vehicleno:Void = save.setObject(vehiclenodb, forKey: "VehicleNumberSave")
var modelno:Void = save.setObject(modelnodb, forKey: "ModelNumberSave")
var variant:Void = save.setObject(variantdb, forKey: "VariantSave")
var color:Void = save.setObject(colordb, forKey: "ColorSave")
var datepurchase:Void = save.setObject(datepurchasedb, forKey: "DateofPurchaseSave")
var insurancecompanyname:Void = save.setObject(insurancecompanynamedb, forKey: "InsuranceCompanySave")
var insuranceexpirydate:Void = save.setObject(insuranceexpirydatedb, forKey: "InsuranceExpirySave")
var fueltype:Void = save.setObject(fueltypedb, forKey: "FuelTypeSave")
save.synchronize()
}
}
}
那是你必须处理的一些丑陋问题 JSON。您可以像这样提取车辆。
if let vehicles = jsonData["vehicles"] as? NSDictionary {
let vehiclesKeys = vehicles.allKeys
for key in vehiclesKeys {
println(vehicles[key])
}
}
大家好,我有一个问题。我在 swift 中使用 JSON 来获取有关用户的信息,因此响应是:
{
"user_details": {
"name":"samsun",
"email_id":"charchit2@ymail.com",
"mobile":"9503322593",
"phone":"NA",
"phone_os":"NA",
"devicetoken":"",
"city":"Mumbai",
"state":"Maharashtra",
"DOB":"0000-00-00",
"gender":"Female",
"address":"Shanti apts, A105",
"pinCode":"400068",
"isRegistered":"verified",
"imei":""
},
"vehicles": {
"1": {
"vechicle_no":"MH03AW0001",
"model_no":"Alto 800",
"variant":"LXI",
"color":"White",
"date_of_purchase":"10/10/2014",
"insurance_company_name":"Bajaj",
"insurance_expiry_date":"10/10/2015",
"created_at":"2015-06-02 23:31:30",
"fuelType":"CNG",
"vinNumber":"HSJHFJ10"
},
"2": {
"vechicle_no":"MH48S8403",
"model_no":"Swift",
"variant":"VXI",
"color":"AZURA GREY",
"date_of_purchase":"17/10/2007",
"insurance_company_name":"NEW INDIA",
"insurance_expiry_date":"17/10/2007",
"created_at":"2015-06-27 22:22:57",
"fuelType":"Petrol",
"vinNumber":"ABCD0316"
}
},
"status":"1",
"verified":"true"
}
好的,现在我需要保存车号(vehicle_no)但是因为有不同的用户我需要保存,比如第一个车号,第二个车号,第三个车号等等。所以例如这个用户有两个车号,我可以看到它,因为在“2”之后有第二个车号。那么我怎样才能得到两个车号呢?我还需要能够读取第三个、第四个 exc.. 车辆号码(如果用户有此号码)。对不起,如果我没有解释清楚,但提前谢谢你。
这是我现在的 jSON 代码。
func MyVehicleInfo() {
let Mobile = save.stringForKey("USERNAME")!
let post:NSString = "mobile=9503322593"
NSLog("PostData: %@",post);
let url:NSURL = NSURL(string: "http://saimobileapp.com/services/sai_authenticate.php")!
let postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!
let postLength:NSString = String( postData.length )
let request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postData
request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
var reponseError: NSError?
var response: NSURLResponse?
var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)
println(urlData)
if ( urlData != nil ) {
let res = response as! NSHTTPURLResponse!;
NSLog("Response code: %ld", res.statusCode);
if (res.statusCode >= 200 && res.statusCode < 300)
{
let responseData:NSString = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!
NSLog("Response ==> %@", responseData);
var error: NSError?
let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as! NSDictionary
let vehiclenodb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["vechicle_no"]! as! String
let modelnodb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["model_no"]! as! String
let variantdb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["variant"]! as! String
let colordb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["color"]! as! String
let datepurchasedb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["date_of_purchase"]! as! String
let insurancecompanynamedb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["insurance_company_name"]! as! String
let insuranceexpirydatedb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["insurance_expiry_date"]! as! String
let fueltypedb = ((jsonData ["vehicles"] as! NSDictionary)["1"]! as! NSDictionary)["fuelType"]! as! String
//var emaildb = ((jsonData as NSDictionary)["user_details"] as! NSDictionary) ["email_id"] as! String
var vehicleno:Void = save.setObject(vehiclenodb, forKey: "VehicleNumberSave")
var modelno:Void = save.setObject(modelnodb, forKey: "ModelNumberSave")
var variant:Void = save.setObject(variantdb, forKey: "VariantSave")
var color:Void = save.setObject(colordb, forKey: "ColorSave")
var datepurchase:Void = save.setObject(datepurchasedb, forKey: "DateofPurchaseSave")
var insurancecompanyname:Void = save.setObject(insurancecompanynamedb, forKey: "InsuranceCompanySave")
var insuranceexpirydate:Void = save.setObject(insuranceexpirydatedb, forKey: "InsuranceExpirySave")
var fueltype:Void = save.setObject(fueltypedb, forKey: "FuelTypeSave")
save.synchronize()
}
}
}
那是你必须处理的一些丑陋问题 JSON。您可以像这样提取车辆。
if let vehicles = jsonData["vehicles"] as? NSDictionary {
let vehiclesKeys = vehicles.allKeys
for key in vehiclesKeys {
println(vehicles[key])
}
}