Как обновить JSON в типе значения данных с помощью Swift

Попробуйте что-нибудь подобное. Меня устраивает. Logg (Имя класса)

    String level= "";

    Properties prop = new Properties();

    InputStream in =
            Logg.class.getResourceAsStream("resources\\config");

    if (in != null) {
        prop.load(in);
    } else {
        throw new FileNotFoundException("property file '" + in + "' not found in the classpath");
    }

    level = prop.getProperty("Level");
0
задан Robert Dresler 6 March 2019 в 18:51
поделиться

1 ответ

Сначала вам нужно struct в соответствии с Codable, соответствующим вашему json

struct Person: Codable {
    var name: String
    var age: Int
    var pets: [String]
}

, затем вы можете использовать этот универсальный метод, который принимает объект типа Data, декодирует его и изменяет его так, как вы объявим позже в changeBlock закрытие. Затем он кодирует его обратно

extension Data {
    mutating func update<T: Codable>(changeBlock: (inout T) -> Void) throws {
        var decoded = try JSONDecoder().decode(T.self, from: self)
        changeBlock(&decoded)
        self = try JSONEncoder().encode(decoded)
    }
}

Использование:

do {
    try data.update { (person: inout Person) -> Void in
        person.pets[0] = "cat"
    }
} catch { print(error) }

//print(String(data: data, encoding: .utf8))
0
ответ дан Robert Dresler 6 March 2019 в 18:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: