使用 Alamofire 在 swift 3 中解析 Json
Posted
技术标签:
【中文标题】使用 Alamofire 在 swift 3 中解析 Json【英文标题】:Json Parsing in swift 3 using Alamofire 【发布时间】:2017-01-04 11:34:28 【问题描述】:我在 swift 3 工作。我是 ios 新手。我正在尝试解析 json 数据,例如
My jsonVlaue is :
data = (
Password = "@1234";
UserName = "<null>";
"___class" = OrderTable;
"__meta" = "\"relationRemovalIds\":,\"selectedProperties\":[\"UserName\",\"created\",\"name\",\"___class\",\"ownerId\",\"updated\",\"objectId\",\"Password\"],\"relatedObjects\":";
created = 1483525854000;
name = TestMan;
objectId = "4316DEBA-78C1-C7BD-FFBC-3CB77D747F00";
ownerId = "<null>";
updated = "<null>";
,
Password = 123;
UserName = "<null>";
"___class" = OrderTable;
"__meta" = "\"relationRemovalIds\":,\"selectedProperties\":[\"UserName\",\"created\",\"name\",\"___class\",\"ownerId\",\"updated\",\"objectId\",\"Password\"],\"relatedObjects\":";
created = 1483516868000;
name = tommy;
objectId = "29155114-C00B-5E1C-FF6F-7C828C635200";
ownerId = "<null>";
updated = "<null>";
.......
我只想要 keyvalue:"name" 和我想添加到数组中的值。
我尝试这样做,但我的应用程序崩溃了。我的代码我喜欢如下
func getLoginDetails()
//https://api.backendless.com/<version>/data/<table-name>/properties
Alamofire.request( HeadersClass.api.domainName + "OrderTable", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: HeadersClass.allHeaders.headers).responseJSON response in
//debugPrint(response)
if let jsonDict = response.result.value as? NSDictionary
print("My jsonVlaue is : \(jsonDict)")
let arrayPracticeData: NSArray = jsonDict.value(forKey: "name") as! NSArray
print(arrayPracticeData)
谁能告诉我如何解决这个问题。提前致谢。
【问题讨论】:
【参考方案1】:首先在 Swift 中使用 Swift 的原生 Array 和 Dictionary
而不是 NSDictionary
和 NSArray
。
现在要获取名称,您需要从 JSON
响应 Dictionary
中获取 Data
数组。所以试试这样的。
Alamofire.request( HeadersClass.api.domainName + "OrderTable", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: HeadersClass.allHeaders.headers).responseJSON response in
//debugPrint(response)
if let jsonDict = response.result.value as? [String:Any],
let dataArray = jsonDict["data"] as? [[String:Any]]
let nameArray = dataArray.flatMap $0["name"] as? String
print(nameArray)
输出
["TestMan", "tommy", ...]
【讨论】:
@hrithib 欢迎朋友 :)以上是关于使用 Alamofire 在 swift 3 中解析 Json的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 - 不能使用数组提出的 Alamofire 请求
带有 XML 响应和正文的 SOAP 请求 swift 3,Alamofire
使用 Alamofire 在 swift 3 中解析 Json