json - 如何排除指定关键字的结果
问题描述
我想从 json 结果中指定一些关键字并排除结果。(例如,在图像中,我想排除两个名称为 McDonald's 的结果。)我进行了各种搜索,但我不知道该怎么做。
谢谢!
for i in 0...totalHitCount - 1{
if json["results"][i]["geometry"]["location"]["lat"] != "" &&
json["results"][i]["geometry"]["location"]["lng"] != "" &&
json["results"][i]["name"] != "" {
let extractedExpr = ShopData(lat: json["results"][i]["geometry"]["location"]["lat"].double,lng:json["results"][i]["geometry"]["location"]["lng"].double,name:json["results"][i]["name"].string)
print(json["results"][i]["name"].string)
let shopData = extractedExpr
self.shopDataArray.append(shopData)
print(self.shopDataArray.debugDescription)
}
else{
print("")
}
}
解决方案
要过滤某些名称,创建一个黑名单,内容可以只是名称的一部分,例如
let blackList = ["McDonald", "Kentucky"]
然后过滤
lat
并且long
存在name
存在且不为空blacklist
不含name
let results = json["results"].arrayValue for result in results { let location = result["geometry"]["location"] if let lat = location["lat"].double, let lng = location["lng"].double, let name = result["name"].string, !name.isEmpty, !blackList.contains(where: { name.contains($0) }) { let extractedExpr = ShopData(lat: lat, lng: lng, name: name) print(name) let shopData = extractedExpr self.shopDataArray.append(shopData) print(self.shopDataArray.debugDescription) } else { print(result) } }
代码有点快,强烈建议您放弃SwiftyJSON
支持Codable