Как конвертировать Cookie String в JSON, используя Swift - PullRequest
0 голосов
/ 12 марта 2019
   ("Global_Data"): {
       Created = 574049501;
       Domain = "";
       Expires = "2019-03-19 02:11:40 +0000";
       Name = "Data";
       Path = "/";
       Value = "%7B%22countryISO%22%3A%22US%22%2C%22cultureCode%22%3A%22en-GB%22%2C%22currencyCode%22%3A%22USD%22%2C%22apiVersion%22%3A%222.1.4%22%7D;
       Version = 1;
    }

При получении данных Cookie из веб-просмотра я получил Value => в виде строки, в которой некоторые символы знают, что эти символы представляют собой специальные символы или буквы.Как я могу преобразовать его в формат JSON.Спасибо

"% 7B% 22countryISO% 22% 3A% 22US% 22% 2C% 22cultureCode% 22% 3A% 22en-GB% 22% 2C% 22currencyCode% 22% 3A% 22USD% 22%2C% 22apiVersion% 22% 3A% 222.1.4% 22% 7D "

1 Ответ

2 голосов
/ 12 марта 2019

Ваша строка уже является строкой JSON, вам просто нужно удалить из нее процентную кодировку, создать собственную структуру, соответствующую Decodable, и все готово:

struct Root: Decodable {
    let countryISO, cultureCode, currencyCode, apiVersion: String
}

let string = "%7B%22countryISO%22%3A%22US%22%2C%22cultureCode%22%3A%22en-GB%22%2C%22currencyCode%22%3A%22USD%22%2C%22apiVersion%22%3A%222.1.4%22%7D"

let json = string.removingPercentEncoding ?? ""

"{" countryISO ":" US "," cultureCode ":" en-GB "," currencyCode ":" USD "," apiVersion ":" 2.1.4 "}"

do {
    let root = try JSONDecoder().decode(Root.self, from: Data(json.utf8))
    print(root.countryISO)    // "US"
    print(root.cultureCode)   // "en-GB"
    print(root.currencyCode)  // "USD"
    print(root.apiVersion)    // "2.1.4"
} catch {
    print(error) 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...