SwiftyJSON - 可以检查对象类型吗?

Posted

技术标签:

【中文标题】SwiftyJSON - 可以检查对象类型吗?【英文标题】:SwiftyJSON - is possible to check object type? 【发布时间】:2016-02-28 09:05:32 【问题描述】:

例如我有一个 json

var json = JSON(data: data!)

在其中我引用了对象

var list = json["OBJECT"]

有没有办法,我可以检查它是一个对象、数组还是字符串并返回 bool ?

This 没有帮助。 var list 将始终是 JSON 的类型。我想找到一种方法来检查里面的东西。

【问题讨论】:

How to determine the type of a variable in Swift的可能重复 解释了为什么不重复。 大多数通过网络接收的 JSON 字符串是不同的——至少它们返回的集合类型是不同的——所以你应该“知道”而不是“猜测”。 您确实有时间发表评论和编辑。我建议你花点时间来选择一个答案。 【参考方案1】:

SwiftyJSON 中的 JSON 对象有一个 type 属性,其类型是 enum

public enum Type: Int 
    case number
    case string
    case bool
    case array
    case dictionary
    case null
    case unknown

例如

var list = json["OBJECT"]
switch list.type 
  case .array: print("list is Array")
  case .dictionary: print("list is Dictionary")
  default: break

【讨论】:

当我尝试这个时,我得到...... Pattern cannot match values of type 'Type' errors on both case lines @SamLuther 在 Swift 3+ 中,枚举大小写是小写的。我更新了答案。【参考方案2】:

看看这个例子:

//let json = ["OBJECT":"stringvalue"]

let testArray = [1,2,3]
let json = ["OBJECT":testArray]

if let element = json["OBJECT"] 
    if element is String 
        print("yes")
    
    switch element 
    case is String:
        print("is string")
    case is Array<Int>:
        print("is array of int")
    default:
        print("is something else")
    

【讨论】:

以上是关于SwiftyJSON - 可以检查对象类型吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftyJSON 在 Swift 中解析这个 JSON 对象?

我将如何使用 SwiftyJSON 解析这种类型的 JSON?

如何从 SwiftyJSON 对象数组中搜索?

SwiftyJSON 添加 JSON 对象数组

SwiftyJSON 和动态命名对象

SwiftyJson 添加到对象/数组的末尾