从服务器获取国家/地区列表。服务器响应是这样的。
[
{
"CountryID": 2,
"Name": "Afghanistan",
"Code": "AFG",
"CreatedDate": "2018-01-09T02:05:02.08"
},
{
"CountryID": 3,
"Name": "Aland Islands",
"Code": "ALA",
"CreatedDate": "2018-01-09T02:05:02.08"
}
]
使用SwiftyJSON将响应转换为Json,就像这样。
if let value = response.result.value {
let json = JSON(value)
let countryListData = CountryList(fromJson: json)
completionHandler(true, countryListData)
}
Country List类就是这样。
class CountryList {
var countries: [Country]!
init(fromJson json: JSON!) {
let countryArray = json[0].arrayValue
for countryJson in countryArray {
let value = Country(fromJson: countryJson)
countries.append(value)
}
}
}
class Country {
var code : String!
var countryID : Int!
var createdDate : String!
var name : String!
init(fromJson json: JSON!){
if json == nil{
return
}
code = json["Code"].stringValue
countryID = json["CountryID"].intValue
createdDate = json["CreatedDate"].stringValue
name = json["Name"].stringValue
}
}
如何在SwiftyJson中的方括号之前解析没有键的数组?它没有正确地给出数组对象。
我知道这是以正常方式完成的,就像将响应转换为字典一样。但客户建议使用SwiftyJson。所以我只是在SwiftyJson中尝试这个。
给我一些建议,不要将此问题标记为重复。因为我没有从互联网上获得任何参考来使用SwiftyJson转换它。
答案 0 :(得分:2)
班上的两个问题CountryList
class CountryList {
// 1. the countries var is not initialized
// var countries: [Country]!
// Initialize it like below
var countries = [Country]()
init(fromJson json: JSON!) {
// 2 issue is that json itself is an array so no need of doing json[0].arrayValue
let countryArray = json.arrayValue
for countryJson in countryArray {
let value = Country(fromJson: countryJson)
countries.append(value)
}
}
}
答案 1 :(得分:0)
我自己找到了答案。我将响应转换为NSArray,就像这样
class CountryList {
var countries = [Country]()
init(fromArray array: NSArray!) {
for countryJson in array {
let value = Country(fromJson: countryJson)
countries.append(value)
}
}
}
class Country {
var code : String!
var countryID : Int!
var createdDate : String!
var name : String!
init(fromJson json: JSON!){
if json == nil{
return
}
code = json["Code"].stringValue
countryID = json["CountryID"].intValue
createdDate = json["CreatedDate"].stringValue
name = json["Name"].stringValue
}
}
并像这样更改了CountryList类
import itertools
l = (list(i) for i in itertools.product(tuple(range(2)), repeat=3) if tuple(reversed(i)) >= tuple(i))
print list(l)
现在它的工作符合我的预期。感谢您的所有意见和回答。