'Unable to get JSON response with Decodable in Swift
in postman response structure like this:
{
"categories": [
{
"id": 48,
"name": "Round-The-Clock",
"description": "24 hours round the clock menu",
"status": "enabled",
"products": [
{
"id": 280,
"name": ".Tea",.....
for this i have created Decodable model like this
struct Categories: Codable {
let categories: [Category]?
let featuredProducts: [Product]?
//coding keys..
}
struct Category: Codable {
let id: Int?
let name, categoryDescription: String?
let products: [Product]?
}
struct Product: Codable {
let id: Int?
let name, productDescription: String?
}
Parsing code: with this code break point hits with this if let jsonData = try? decoder.decode(Categories.self, from: respData) line but not hitting print("the categories are: (jsonData)") line and nothing comes in console, why? where am i wrong.. how to get response
class FoodMenuViewController: UIViewController {
private var catData: Categories? {
didSet{ }
}
func foodMenuServicecall(){
let urlStr = "http://54.149.84.126/categories?shop=1"
let url = URL(string: urlStr)
var req = URLRequest(url: url!)
req.httpMethod = "GET"
req.addValue("X-Requested-With", forHTTPHeaderField: "Content-Type")
req.addValue("XMLHttpRequest", forHTTPHeaderField: "X-Requested-With")
URLSession.shared.dataTask(with: url!, completionHandler: {(data, response, error) in
guard let respData = data else {return}
guard error == nil else {
print("error")
return
}
do{
let decoder = JSONDecoder()
if let jsonData = try? decoder.decode(Categories.self, from: respData) {
print("the categories are: \(jsonData)")
self.catData = jsonData
}
}
catch {print("catch error")}
}).resume()
}
EDIT: if i test like this i am getting response but here
func foodMenuServicecall(){
if let url = URL(string: "http://54.149.84.126//categories?shop=1"){
var req = URLRequest(url: url)
req.allHTTPHeaderFields = ["X-Requested-With" : "XMLHttpRequest"]
URLSession.shared.dataTask(with: req) { data, _, err in
guard let safeData = data else{return}
print(String(data: safeData, encoding: .utf8) ?? "")
}.resume()
}
}
o/p in consol:
Solution 1:[1]
Your decodable model expects a key of "categoryDescription", your JSON has a key of "description".
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | HunterLion |

