我得到不同的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 = ...
}