如何在swift中获取特定的json值
我想要json对象中的大小值,但问题是我得到的是整个json数据,我只想打印大小值 这是我的json如何在swift中获取特定的json值,json,swift,Json,Swift,我想要json对象中的大小值,但问题是我得到的是整个json数据,我只想打印大小值 这是我的json [{ size = { height = 20 width = 10 }, number = 100 }] 这是我的密码 do{ let Json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers)
[{
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.")
}
或者,如果您需要高度和宽度
var sizeDict = newValue["size"] as! [String:Any]
print("Width - \(sizeDict["width"])")
print("Width - \(sizeDict["height"])")
您只需要从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.")
}
请学习阅读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:您必须转换
高度
和宽度
的类型。输出–实际上是而不是JSON–是不明确的,您无法看到值是String
还是Int
,您只需获取大小键即可打印大小。为了便于参考,请点击此链接,你能为meMy编写代码吗亲爱的,请先尝试,如果你有任何问题,请告诉我们。。。。我们肯定会帮助你……我得到的是整个json数据,我只想计算valueHey@username000的大小,解析后得到的模型是数组。您需要首先获得该数组的索引,然后到达键值对。您的案例将是newValue[][“Key”]或者您可以尝试使用newValue。首先[“Key”]im GET error不能为“[[String:Any]]”类型的值下标,如果数组中存在“String”类型的索引,则newValue[“size”]将是一个错误。您可以更正您的答案,在newValue{dict[“size”]}中声明相同的.var sizeDict=newValue[0][“size”]foreach stationfor dict。mutableContainers
选项应该做什么?@Fehniix将结果分配给NSMutable…
对象是一个与Objective-C相关的选项,在Swift中没有意义。如果结果被分配给一个let
常量,那么它就毫无意义了。
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"])
}
}
}