如何在 Swift 中访问 JSON 响应中的特定数据

Posted

技术标签:

【中文标题】如何在 Swift 中访问 JSON 响应中的特定数据【英文标题】:How to access specific data in a JSON response in Swift 【发布时间】:2018-01-27 20:31:23 【问题描述】:

当我运行我的 swift 程序时,我得到了这个 JSON 响应。


"success": true,
"info": "Groups",
"data": 
    "groups": "[\"id\":1,\"name\":\"test\",\"user_id\":1,\"active\":null,\"public\":true,\"image_file_name\":null,\"image_content_type\":null,\"image_file_size\":null,\"image_updated_at\":null,\"created_at\":\"2017-10-15T20:40:13.671+01:00\",\"updated_at\":\"2017-10-15T20:40:13.671+01:00\",\"hashtag\":null,\"id\":4,\"name\":\"test_again\",\"user_id\":1,\"active\":null,\"public\":false,\"image_file_name\":null,\"image_content_type\":null,\"image_file_size\":null,\"image_updated_at\":null,\"created_at\":\"2018-01-16T18:17:06.575+00:00\",\"updated_at\":\"2018-01-16T18:17:06.575+00:00\",\"hashtag\":null]"

但是,我想访问“组”中包含的信息,特别是组的 ID 和名称。有什么简单的方法吗?

【问题讨论】:

groups 对应一个字符串,而不是 JSON 数组。 (因为它包含在引号中)提取字符串,然后将其解析为数组。 这正是我需要知道的,谢谢 只是让您知道,如果您以任何方式控制后端或服务,或者可以联系负责它的人;要求他们不要将其作为字符串发送。它打破了所有惯例。 我实际上确实可以访问后端,但我没有自己编写它并且它在 Rails 中,所以我不知道如何去改变它。如果我要更改它,我会将字符串中的所有内容作为嵌套响应发送吗? 是的,没错。 【参考方案1】:
let dic  = response["data"] as! [String:Any]

let groups = dic["groups"] as! String

然后用 jsonSerialization 解析组

let id  = data["id"]

【讨论】:

以上是关于如何在 Swift 中访问 JSON 响应中的特定数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将用户登录的 JSON 响应保存到 Core Data 中以跟踪 Swift 中的用户状态?

访问 JSON 响应中的特定元素(通常的方法不起作用)

在 Swift 中的字典中搜索

使用 Swift 访问 JSON

如何在iOS swift的tableview中使用json响应中的键和值?

在 Swift 中使用 JSON 的 Alamofire 请求后,如何在 AnyObject 中转换 <AnyObject> 响应?