简单的 getJSON() 函数
Posted
技术标签:
【中文标题】简单的 getJSON() 函数【英文标题】:Simple getJSON() function 【发布时间】:2016-11-07 20:09:03 【问题描述】:SwiftyJSON 是一个非常有用的 Swift 插件,可通过各种方法(CocoaPods、Carthage 等)导入,我在许多项目中使用它,因为它们通常需要 JSON 文件。所以我想要一个不错的简单函数,我可以使用必要的参数调用它并从我的 JSON 文件中获取我的原始字符串值。
【问题讨论】:
【参考方案1】:第一步。我们将创建一个协议,其中包含一个构造方法和模型类
protocol JSONable
init?(parameter: JSON)
class Style: JSONable
let ID :String!
let name :String!
required init(parameter: JSON)
ID = parameter["id"].stringValue
name = parameter["name"].stringValue
/* JSON response format
"status": true,
"message": "",
"data": [
"id": 1,
"name": "Style 1"
,
"id": 2,
"name": "Style 2"
,
"id": 3,
"name": "Style 3"
]
*/
第 2 步。我们将创建 JSON 的扩展,它将 JSON 转换为模型类类型对象
extension JSON
func to<T>(type: T?) -> Any?
if let baseObj = type as? JSONable.Type
if self.type == .array
var arrObject: [Any] = []
for obj in self.arrayValue
let object = baseObj.init(parameter: obj)
arrObject.append(object!)
return arrObject
else
let object = baseObj.init(parameter: self)
return object!
return nil
第 3 步。使用带有 Alamofire 或其他代码的代码。
Alamofire.request(.GET, url).validate().responseJSON response in
switch response.result
case .success(let value):
let json = JSON(value)
var styles: [Style] = []
if let styleArr = json["data"].to(type: Style.self)
styles = styleArr as! [Style]
print("styles: \(styles)")
case .failure(let error):
print(error)
我希望这会有用。
请参阅此链接了解更多信息。https://github.com/SwiftyJSON/SwiftyJSON/issues/714
【讨论】:
【参考方案2】:这是我创建的函数,您可以自己使用(当然需要将 SwiftJSON 正确集成到您的 Xcode Swift 项目中)...
func getJSON(value: [String], fileName: String) -> String
guard let path = Bundle.main.path(forResource: fileName, ofType: "json"),
let jsonData = NSData(contentsOfFile: path) else
print("Couldn't find the file on disk or failed to read it")
return "ERR."
let jsonObject = JSON(data: jsonData as Data)
guard let jsonValue = jsonObject[value].string else
print("FAILED to find JSON object")
return "ERR."
return jsonValue
此函数的示例用法是let myJsonValue = getJSON(value: ["people","person1"], fileName: "database")
,它将从名为 database.jsonpeople 组中获取值 person1 /em>。所以,如果database.json
文件看起来像这样
"people" :
"person1" : "Bob",
"person2" : "Steve",
"person3" : "Alan",
该函数将返回一个值"Bob"
希望这对任何人都有帮助,或者如果您对此有任何建议,请告诉我!建设性的批评总是受欢迎的。
【讨论】:
以上是关于简单的 getJSON() 函数的主要内容,如果未能解决你的问题,请参考以下文章