{
"status": true,
"status_code": 1,
"content": [
{
"cat_id": "3",
"cat_name": "Food",
"cat_parentid": "2"
},
{
"cat_id": "4",
"cat_name": "Entertainment",
"cat_parentid": "2"
},
{
"cat_id": "5",
"cat_name": "Cars",
"cat_parentid": "2"
},
{
"cat_id": "12",
"cat_name": "Personal Care",
"cat_parentid": "2"
}
],
"message": "Success"
}
更新
do {
//create json object from data
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
completion((json as? AnyObject)!) //here completion callback will return the jsonObject to my UIViewController.
}
} catch let error {
print(error.localizedDescription)
}
这是我的JSONObject。我对swift很新。如何获取内容JSONArray并在swift中进一步处理。有人可以帮帮我吗?帮助将不胜感激。
答案 0 :(得分:3)
此代码检查状态是否为true
,获取密钥content
的数组并打印数组中的所有值。
数组显然是[[String:String]]
,因此将对象强制转换为此特定类型。
do {
//create json object from data
if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] {
if let status = json["status"] as? Bool, status == true {
if let content = json["content"] as? [[String:String]] {
for category in content {
let id = category["cat_id"]
let name = category["cat_name"]
let parentId = category["cat_parentid"]
print(id , name, parentId)
}
}
}
}
} catch let error {
print(error.localizedDescription)
}
PS:一如既往,永远不要在Swift中使用.mutableContainers
。它毫无意义
答案 1 :(得分:1)
检查你的json是否有内容数组
if let content = json["content"] as? [Dictionary<String, AnyObject>] {
print(content) // it will give you content array
}
答案 2 :(得分:0)
您可以通过提供密钥
来提取数据if let array = result["content"] as? Array<AnyObject> {
print(arry)
}
答案 3 :(得分:0)
let content = dict.objectForKey("content")! as NSArray
然后你可以通过
获取单个对象的json进行解析for var cat in content
{
print(cat)
}
答案 4 :(得分:0)
另一种替代方法,通过使用库。
首先,为Swift导入JSON库 - SwiftyJSON并使用代码:
import SwiftyJSON
let json = JSON(<jsonObject data>)
let contentArray: Array<JSON> = json["content"].arrayValue
图书馆整合
如果您正在使用cocoapods,请使用此pod:
pod 'SwiftyJSON'
或者只需将SwiftyJSON.swift
拖到项目树中。
答案 5 :(得分:0)
您可以访问以下
if let filePath = Bundle.main.path(forResource: "sample", ofType: "json"), let data = FileManager().contents(atPath: filePath) {
do {
let dicRes = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any]
let contentArray = dicRes?["content"]
print("contentArray == \(contentArray)")
} catch {
}
}
答案 6 :(得分:0)
获取这样的内容数组:
let allContent = json["content"] as? [[String: Any]]
完整样本:
do {
//create json object from data
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
if let allContent = json["content"] as? [[String: Any]] {
for content in allContent {
let catId = content["cat_id"] as? String
let catName = content["cat_name"] as? String
let catParentId = content["cat_parentid"] as? String
print(">> catid=" + catId!)
print(">> catName=" + catName!)
print(">> catparentID=" + catParentId!)
}
}
}
} catch let error {
print(error.localizedDescription)
}