检测 json 的类型



我得到不同的json对象,我需要检测json消息的类型(卖家列表,客户列表,产品,订单等(。

JSON 类型 1:

{"Sellers": [
        { "name":"A", "ID":5 },
        { "name":"B", "ID":4 }
    ]
}

JSON 类型 2:

{"Clients": [
        { "name":"A", "SelectedProduct": "DDD" },
        { "name":"B", "SelectedProduct": "CCC" }
    ]
}

JSON 类型 3:

{"ID": "78915"}

如何检测 json 类型以解析它?

guard let JSON = try JSONSerialization.jsonObject(with:data, options: []) as? [String: Any],
                     let sellers = JSON["Sellers"] as? [[String: Any]],
                     let clients = JSON["Clients"] as? [[String: Any]],
                     let product = JSON["ID"] as? [String: Any],
else { return }
var type: JsonType
if(sellers != nil){
    type = ...
}
if(clients != nil){
    type = ...
}

检测 json 对象类型的最佳方法是什么?我可以在守卫让 JSON 区域内检测到它吗?

创建一个继承自 NSOBJECT 类的基类 JSONTYPE。

创建 3 个其他类,即:1. 卖家 -> 2 个属性(名称、ID(2. 客户端 -> 2 个属性(名称、选定产品(3. ID -> 1 属性 (ID(

所有这些都继承了JSONTYPE类。

然后更改您的代码,如下所示:-

guard let JSON = try JSONSerialization.jsonObject(with:data, options: []) as? [String: Any],
                     let sellers = JSON["Sellers"] as? [Seller],
                     let clients = JSON["Clients"] as? [Client],
                     let product = JSON["ID"] as? [ID],
else { return }
var type: JSONTYPE
if(sellers != nil){
    type = ...
}
if(clients != nil){
    type = ...
}

相关内容

  • 没有找到相关文章

最新更新