如何解析JSON数据并消除Swift中的重复?

时间:2017-03-01 05:18:43

标签: json swift dictionary

我有一个非常大的JSON文件,我已经从网上下载了,我需要在Swift中解析它。 JSON构造是一个字典数组。每个字典对象都包含一个" phone" (指电话号码),其值是字符串形式的实际电话号码。

我想要做的是遍历数组中的整个字典对象列表,并确保没有字符对象具有相同的键值," phone"。如果找到重复,我想从列表中删除它,并将其打印到控制台。

以下是我的相关代码:

            guard let json = try? JSONSerialization.jsonObject(with: data) as? [[String: Any]] else {
                print("error")
                return
            }

            for dict in json! {
                //This is where I would do the check

            }

我将如何做到这一点?

2 个答案:

答案 0 :(得分:1)

你可以这样做

var ph = [String]()
var newjson = [[String:String]]()

    for dict in json {
        if ph.contains(dict["Phone"]!) {

            print("duplicate phone \(dict["Phone"]!)")

        } else {

        ph.append(dict["Phone"]!)
        newjson.append(dict)

        }
    }
    print(newjson)

Hare newjson是没有重复电话的新字典数组

答案 1 :(得分:0)

使用数组扩展方法从json对象中删除重复项

extension Array where Element: Equatable {
    mutating func removeDuplicates() {
        var result = [Element]()
        for value in self {
            if !result.contains(value) {
                result.append(value)
            }
        }
        self = result
    }
}

    Alamofire.request(apiURL, method: .get, parameters:parameters, headers:headers)
                    .responseJSON { response  in
                            if let result = response.result.value {
                                let json = JSON(result)
                                var listArray = json["somekey"].arrayValue
                                listArray.removeDuplicates()
                                print(listArray)
                            }
                }