我想要json对象中的大小值,但问题是我正在获取整个json数据,我只希望打印大小值
这是我的json
[{
size = {
height = 20
width = 10
},
number = 100
}]
这是我的代码
do{
let Json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers)
//print(Json as Any)
guard let newValue = Json as? [[String: Any]] else {
print("invalid format")
return
}
print(newValue)
}catch {
print("Response Not Found.")
}
答案 0 :(得分:3)
请学习阅读JSON,这非常简单,只有两种收集类型:
[]
是数组,Swift [Any]
,但是在几乎所有情况下,[[String:Any]]
都是通过索引订阅访问的。{}
是字典,Swift [String:Any]
,可通过密钥订阅进行访问 从不使用Swift中的mutableContainers
选项,它根本没有任何作用。
if let json = try JSONSerialization.jsonObject(with: data!) as? [[String:Any]] {
for item in json {
if let size = item["size"] as? [String:Any] {
print(size["height"], size["width"])
}
}
}
变量名应该以小写字母开头。
PS:您必须强制转换height
和width
的类型。输出(实际上是不是 JSON)是不明确的,您无法查看该值是String
还是Int
答案 1 :(得分:0)
您只需要从newValue中提取大小即可。试试这个
do {
let Json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers)
guard let newValue = Json as? [[String: Any]],
let size = newValue[0]["size"] as? [String:Any] else {
return
}
print(size)
}
catch {
print("Response Not Found.")
}
答案 2 :(得分:-2)
guard let newValue = Json as? [[String: Any]] else {
print("invalid format")
return
}
print(newValue["size"])
或者如果您想要高度和宽度
var sizeDict = newValue["size"] as! [String:Any]
print("Width - \(sizeDict["width"])")
print("Width - \(sizeDict["height"])")