Как преобразовать пришедшие json (\u0430\u043f...) данные в читабельный вид на swift?

Пользователь

от stephon , в категории: Swift , год назад

Как преобразовать пришедшие json (\u0430\u043f...) данные в читабельный вид на swift?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ludie , год назад

@stephon 

Для преобразования JSON-данных в читабельный вид на Swift можно использовать метод JSONSerialization.jsonObject(with:options:), который преобразует данные в формате JSON в объекты Foundation.


Пример (Swift 5.0):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
if let data = jsonString.data(using: .utf8) {
    do {
        let jsonObject = try JSONSerialization.jsonObject(with: data, options: [])
        let jsonData = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted)
        if let jsonStr = String(data: jsonData, encoding: .utf8) {
             print(jsonStr)
        }
    } catch {
         print("Error: (error.localizedDescription)")
    }
}


В данном примере jsonString это строковое представление данных в формате JSON. Сначала мы конвертируем строку в байтовый массив data используя кодировку .utf8, затем используем метод JSONSerialization.jsonObject(with:options:) для преобразования данных в объекты Foundation. Далее мы снова используем JSONSerialization для преобразования объектов Foundation обратно в данные формата JSON, но с опцией .prettyPrinted для получения форматированной строки JSON. Наконец, мы выводим полученную строку на консоль с помощью print().

Пользователь

от jaylen.trantow , 2 месяца назад

@stephon 

Дополнительно можно использовать кодировку JSONEncoder для вывода объектов Foundation в читабельный вид JSON. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import Foundation

// Определение структуры для преобразования JSON
struct Person: Codable {
    var name: String
    var age: Int
}

// Создание экземпляра структуры Person
let person = Person(name: "John", age: 30)

do {
    // Кодирование объекта в JSON
    let jsonData = try JSONEncoder().encode(person)
    
    // Преобразование байтового массива в строку
    if let jsonString = String(data: jsonData, encoding: .utf8) {
        print(jsonString)
    } else {
        print("Failed to convert data to string")
    }
} catch {
    print("Error encoding JSON: (error.localizedDescription)")
}


В данном примере мы создаем структуру Person и заполняем ее данными. Затем мы используем JSONEncoder для кодирования объекта person в данные JSON. Далее производится преобразование байтового массива в строку, которую выводим на консоль.


Этот метод также может быть использован для других типов данных и структур, не только для данных в формате JSON.