我收到了来自REST API
的swift中的响应对象(res)。它是类型。 __NSArrayM
。它包含我想要解析的JSON格式字符串。
{ JsonResult = "[ { \"IsAuth\":\"true\" } ]"; }
这是一个很长的JSON字符串,为简单起见,我将其缩短了。
要解析json,对象需要是Dictionary类型,但我不能将__NSArrayM
类型的对象强制转换为它。
我搜索了很多,但无论如何都无法读出这个JSON字符串。
附加:我尝试转换响应对象的对象。我收到了错误 -
无法转换类型' __ NSArrayM' (0x107e86c30)到' NSData' (0x107e86168)或我投入的任何数据类型。
答案 0 :(得分:2)
让我们一步一步来做。
你说你有一个名为“res”的对象,它的类型为__NSArrayM
并且包含这个东西:
{ JsonResult = "[ { \"IsAuth\":\"true\" } ]"; }
这意味着你已经将JSON转换为对象,即NSArray。
在这个我们看不到的数组中,你向我们展示的这个东西是一个字典(我们将其命名为“dict”),其值为 String本身表示另一个JSON对象。
让我们使用密钥获取值:
if let value = dict["JsonResult"] as? String {
print(value)
}
现在“值”应为"[ { \"IsAuth\":\"true\" } ]"
。
这是一个字符串,代表JSON。要解码JSON,我们首先必须将字符串转换为数据,然后才能解码:
if let data = value.data(using: .utf8) {
if let content = try? JSONSerialization.jsonObject(with: data, options: []),
let array = content as? [[String: Any]]
{
print(array)
}
}