我正在尝试从Web应用程序中读取JSON输出。输出结果如下:
[{"group_name":"XYZ","adminof":0}]
我有一个看起来像这样的结构:
struct grouplistStruct{
var group_name : String
var adminof : Any
}
我使用的代码是:
let jsonArray = try JSONSerialization.jsonObject(with: data, options: []) as! [Any]
for jsonResult in jsonArray{
let loc = grouplistStruct(group_name: jsonResult["group_name"], adminof: jsonResult["adminof"])
我可以看到jsonArray正确读取了值。类似地,在for循环中,jsonResult也正确读取值
但是当我尝试将此值分配给Struct变量时,它会显示错误:
Type 'Any' has no subscript members
为什么会这样?对不起,我是Swift的新手,所以我正在学习这一切。
答案 0 :(得分:0)
由于你的json数据是一个包含这样字典的数组:
[{"group_name":"XYZ","adminof":0}]
您收到错误
类型'Any'没有下标成员
因为你将json向下转换为Any
的数组,并且在swift Any
中(顾名思义)表示任何类型,如Int
,Double
或{{ 1}}如你所知Dictionary of type [String: String]
或Int
不能有Double
下标
因此,您需要使用someInt["subscript"]
向下转换为此特定类型。
这表示包含[String:Any]类型的字典的数组。这将起作用,因为词典可以有下标成员,例如[[String: Any]]
因此,您应在此声明someDict["group_name"]
[[String: Any]]
代替[Any]