ios - 需要帮助解析嵌套的 JSON 数据
问题描述
我需要帮助解析这个 JSON
{
"products_and_categories" : {
"new" : [
{
"id" : 173577,
"image_url" : "\/\/assets.supremenewyork.com\/193786\/ca\/tMUMOnomKJI.jpg",
"name" : "Penguins Hooded Fleece Jacket",
"price" : 19800,
"sale_price" : 0,
"image_url_hi" : "\/\/assets.supremenewyork.com\/193786\/rc\/tMUMOnomKJI.jpg",
"new_item" : true,
"position" : 4,
"category_name" : "Jackets"
},
{
"id" : 173581,
"image_url" : "\/\/assets.supremenewyork.com\/193727\/ca\/ywdDy1mQ51Q.jpg",
"name" : "Side Logo Track Jacket ",
"price" : 15800,
"sale_price" : 0,
"image_url_hi" : "\/\/assets.supremenewyork.com\/193727\/rc\/ywdDy1mQ51Q.jpg",
"new_item" : true,
"position" : 3,
"category_name" : "Jackets"
}
]
}
}
我已经制作了这个结构来保存解析的值
var modelsArray: [Products] = Array() //is Products the right one for the array?
struct Products: Codable {
let products: Categories
enum CodingKeys: String, CodingKey {
case products = "products_and_categories"
}
}
struct Categories: Codable {
let new: [New]
}
struct New: Codable {
let id: Int
let name: String
let price: Int
let category: String
let image: String
enum CodingKeys: String, CodingKey {
case id
case name, price
case category = "category_name"
case image = "image_url_hi"
}
}
let url = URL(string: "https://www.supremenewyork.com/shop.json")!
let request = URLRequest(url: url)
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if data = data {
// Having trouble with what to put here to append id, name, price, category, image for tableview
}
}.resume()
但是现在我被卡住了,我无法将其转换为附加我需要的数据的请求。本质上,我希望能够将 id、名称、价格、类别、图像放入 tableview 单元格
解决方案
正如我可能假设的那样,您必须使用 将new
array
数据加载到您的tableView
. 所以,你需要定义你的modelsArray
喜欢,
var modelsArray: [New] = Array()
data
然后像这样解析JSON ,
session.dataTask(with: request) { (data, response, error) in
if let data = data {
do {
let response = try JSONDecoder().decode(Products.self, from: data)
modelsArray = response.products.new
//reload your tableView here...
} catch {
print(error)
}
}
}.resume()
推荐阅读
- c - 如何使用 scanf 函数从 ls -l 的结果中解析两个特定信息作为参数?
- javascript - 两步登录 - 第二步的问题
- angular - 我可以在不立即呈现更改的情况下更新 Firestore 文档吗?
- binary-tree - 重建一棵二叉树需要多少树旅行?
- javascript - 我想要输入的值,但它总是警告 0
- arrays - fortran 中的 array(2:)(::2) 有什么问题?
- c++ - 在 LLVM JIT-ed 代码中启用 RTTI 的问题
- html - 不可见时滚动到底部
- mysql - 无法将 mysql docker 容器与 Spring Boot 应用程序链接 - 通信链接失败
- selenium - 在 Robot Framework 中删除和添加数字的千位分隔符