在Swift中读取JSON输出

时间:2017-09-24 02:46:32

标签: json swift

我正在尝试从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的新手,所以我正在学习这一切。

1 个答案:

答案 0 :(得分:0)

由于你的json数据是一个包含这样字典的数组:

[{"group_name":"XYZ","adminof":0}]

您收到错误

  

类型'Any'没有下标成员

因为你将json向下转换为Any的数组,并且在swift Any中(顾名思义)表示任何类型,如IntDouble或{{ 1}}如你所知Dictionary of type [String: String]Int不能有Double下标

因此,您需要使用someInt["subscript"]向下转换为此特定类型。 这表示包含[String:Any]类型的字典的数组。这将起作用,因为词典可以有下标成员,例如[[String: Any]]

因此,您应在此声明someDict["group_name"]

中使用[[String: Any]]代替[Any]