如何检查JSONArray中的特定值?

时间:2017-04-03 09:10:41

标签: json swift swift3

我在Swift 3中循环有一点问题。我有一个JSONArray和一个JSONObject如下:

dataReqList [Any]:

[{
bezeich = "MORE SALT";
grpnr = 0;
nr = 1;
}, {
bezeich = "MORE SWEET";
grpnr = 0;
nr = 2;
}, {
bezeich = "MORE PEPPER";
grpnr = 0;
nr = 3;
}, {
bezeich = "MORE CHILLI";
grpnr = 0;
nr = 4;
}, {
bezeich = COLD;
grpnr = 0;
nr = 5;
}, {
bezeich = HOT;
grpnr = 0;
nr = 6;
}, {
bezeich = SMALL;
grpnr = 0;
nr = 7;
}, {
bezeich = LARGE;
grpnr = 0;
nr = 8;
}, {
bezeich = "MEDIUM COOKED";
grpnr = 0;
nr = 9;
}, {
bezeich = "WELL DONE";
grpnr = 0;
nr = 10;
}]

currArticle [Anyhashable:Any]:

Optional([AnyHashable("bezeich"): Fresh and Green Salad, 
        AnyHashable("special-request"): ["MORE PEPPER", "COLD", "HOT"]])

我想知道,如果JSONArray在JSONObject中与bezeich具有相同String,则如何在数组中打印键special-request。我试过这个,但它不起作用:

for i in 0..<dataReqList.count {
        if ( ((dataReqList[i] as? [AnyHashable: Any])? ["bezeich"] as! String) == (("\(currArticle?["special-request"]!)") as String) ) {
            print (dataReqList[i])
        }

任何答案和建议对我都有帮助。提前致谢

编辑: 我是斯威夫特的新人。我之前看过THIS,但它仍无效。

1 个答案:

答案 0 :(得分:1)

special-requestcurrArticle字典,其中Array字符串为值,因此您无法直接将其与字符串进行比较,您可以像这样使用过滤器。

var filterArray = [[String:Any]]() 
if let dataArray = dataReqList as? [[String:Any]],
   let specialRequestArray = currArticle["special-request"] as? [String] {

     filterArray = dataArray.filter { specialRequestArray.contains($0["bezeich"] as? String ?? "") }
     print(filterArray)
}