使用 SwiftyJSON 解析 JSON 响应

Posted

技术标签:

【中文标题】使用 SwiftyJSON 解析 JSON 响应【英文标题】:Parse JSON response with SwiftyJSON 【发布时间】:2020-12-22 23:06:55 【问题描述】:

我有以下代码,我正在尝试使用 SwiftyJSON 获取值:

let string =
    """
        "ResponseMetadata": "RequestId": "b5d6ecad-e050-4d1f-8429-74a2775a6fe9", "HTTPStatusCode": 200, "HTTPHeaders": "x-amzn-requestid": "b5d6ecad-e050-4d1f-8429-74a2775a6fe9", "content-type": "application/json", "content-length": "271", "date": "Tue, 22 Dec 2020 22:45:17 GMT", "RetryAttempts": 0, "numberOfRecordsUpdated": 0, "records": [["stringValue": "6998DFFE-A9CF-4BEA-86AD-C356BB865E27", "stringValue": "david.craine@yahoo.com", "stringValue": "David", "stringValue": "Craine", "stringValue": "dcraine", "stringValue": "vendor1", "stringValue": "vendor1_werw8"]]
    """
    
let body = JSON(string)
print(">>>>>>>>> \(body["records"])")

这将为 body["records"] 返回 null。

我使用https://jsonformatter.curiousconcept.com/# 验证了这个回复,所以我假设它的格式正确。有人可以帮忙吗?

【问题讨论】:

“但是,当我尝试获取任何项目(例如“记录”)时,它返回 null”您是如何尝试做到这一点的? 假设提到的字符串的 JSON 对象称为 body ,我使用 body["records"] 我会推荐你​​使用 Swift 的 Codable & JSONDecoder,这将允许你在不使用任何第三方框架的情况下解析和创建 JSON 尝试用let body = JSON(parseJSON: string)替换let body = JSON(string) 感谢@gcharita,它正在工作!如果您发布您的答案,我将标记为正确。 【参考方案1】:

尝试更改此行:

let body = JSON(string)

并调用JSONinit(parseJSON:) 初始化程序,它以String 作为参数,如下所示:

let body = JSON(parseJSON: string)

【讨论】:

以上是关于使用 SwiftyJSON 解析 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftyJSON 解析 JSON 响应而不会崩溃

我应该如何使用 Alamofire 和 SwiftyJSON 解析来自 API 的 JSON 响应?

如何使用 SwiftyJson 解析 json 响应。以下是我的代码和回复

使用 SwiftyJSON 处理 JSON 响应

使用 SwiftyJSON 将 JSON 解析为结构

使用 SwiftyJSON(和 Alamofire)解析 JSON 值