Как удалить свойства (ключ: значения) из объекта JSON в Swift - PullRequest
1 голос
/ 11 июля 2020

У меня JSON это выглядит так:

[
    {
        WWW: "2",
        XXX: "2",
        YYY: "3",
        ZZZ: "4"
    },
    {
        WWW: "2",
        XXX: "5",
        YYY: "6",
        ZZZ: "7"
    },
    {
        WWW: "2",
        XXX: "2",
        YYY: "2",
        ZZZ: "3"
    }
]

Но меня интересует только работа с Y и Z.

Как я могу удалить все W и X столбцы либо из необработанного JSON, либо из JSON в виде массива в SWIFT?

Только ответы, которые я могу найти, такие как здесь кажутся устаревшими. Спасибо за предложения.

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Определите свою структуру, чтобы она соответствовала тому, что вы хотите, а затем декодируйте ее:

struct Value: Decodable {
    enum CodingKeys: String, CodingKey {
        case y = "YYY"
        case z = "ZZZ"
    }
    var y: String
    var z: String
}

let value = try JSONDecoder().decode([Value].self, from: json)

Это исключит любые ключи, которые вы не включаете.

2 голосов
/ 11 июля 2020

Используйте:

dict["WWW"] = nil
dict["XXX"] = nil

или:

dict.removeValue(forKey: "WWW")
dict.removeValue(forKey: "XXX")

Для лучшего подхода используйте JSONEncoder и CodingKeys.

struct Model: Decodable {
    var yyy, zzz: String

    enum CodingKeys: String, CodingKey {
        case yyy = "YYY", zzz = "ZZZ"
    }
}
...