SwiftyJSON 数组元素?

Posted

技术标签:

【中文标题】SwiftyJSON 数组元素?【英文标题】:SwiftyJSON array elements? 【发布时间】:2020-04-17 17:46:49 【问题描述】:

我已尝试寻找如何使用 SwiftyJSON 数组,但似乎没有任何效果。

我在使用 swift 之前的功能是:

json.brands.count
json.brands[0].name
json.brands[0].subname
json.brands[0].value

json.brands[1].name
json.brands[1].subname
json.brands[1].value

//Etc

现在我正在使用:

json[“brands”][“name”].exists()
json[“brands”][“name”].string

但努力插入 [0] [1] 等以使其工作。

*我知道如果可能的话不要使用第 3 方内容,但我的 JSON api 在没有第 3 方的情况下将无法工作。由于数据库中有 10 个用户输入,其中包含数千个 JSON 动态条目,因此我无法对它们全部进行编码,因此可能存在一些对象,如果它们存在,它们可能包含一个值。

我尝试了传统的 swift json 解码器方法,但使用动态嵌套 JSON 捕获所有错误让我很头疼。*

【问题讨论】:

您好 Paul,感谢您分享您的代码。您能否分享您的 JSON 响应,以便其他人更好地了解它?我认为您可以简单地使用循环来获取值。快乐编码:) 我强烈建议您使用 Swift 的 Codable 而不是第三方 JSON 库。 你看,问题是我刚刚过渡到第 3 方,因为我使用复杂的 JSON 作为动态字符串作为条目,并且某些对象可能不存在并且这些对象的某些值可能不存在要么。由于每个错误都必须为我设置标签,我在捕获所有错误并给出响应时遇到了很多麻烦,这让我切换到 SwiftyJSON,这让它变得更加容易。我只是想念如何使用它来分配我的 json 的计数。我可以将这部分留在它现在所在的普通 swift jsonDecoder 中,但这将花费我每个请求的 2 次 API 调用 【参考方案1】:

你可以试试这个:

json[“brands”][0][“name”].exists()
json[“brands”][0][“name”].string

json[“brands”][1][“name”].exists()
json[“brands”][1][“name”].string

希望对你有帮助...

【讨论】:

String 部分有效,exists 部分由于某种原因无效。但是在这种情况下,单独检查字符串应该可以解决问题。因为我可以在运行脚本之前通过计数检查来保护代码。

以上是关于SwiftyJSON 数组元素?的主要内容,如果未能解决你的问题,请参考以下文章

将 SwiftyJSON 中的元素添加到 Swift 中的 URL 数组

使用 Alamofire/SwiftyJSON 获取 JSON 数组的第一个元素

如何删除 SwiftyJSON 元素?

使用 SwiftyJSON 选择字符串数组

在 SwiftyJSON 中处理可选元素的最佳方法是啥?

使用 SwiftyJSON 解析具有相似元素的 JSON