Анализируйте данные JSON в Swift

Я пытаюсь решить проблему, в которой я застрял.
Моя база данных проекта назначает один parentId каждому родителю, у которого может быть несколько childId для своих детей. После входа в систему приложение iOS должно отобразить все childId, связанные с parentId.
. Моя база данных:

ParentID    ChildID    Name        Class
   10          45       Andrew        4
   10          46       Sarah         8
   11          47       Mark          2
   12          48       Claire        4

Мне удалось создать строку JSON для этой информации, если parentId вставлен в форму PHP, для parentId = 10:

[{"childId":45,"name":"Andrew","class":"4"},{"childId":46,"name":"Sarah","class":"8"}]}

Однако я не умею анализировать эти данные в нашем приложении для iOS, чтобы родитель мог видеть идентификаторы своих детей.

Мой Swift Code пока явно не помогает! (Я использую Alamofire для своей сети iOS)

let URL_CHILD_DEVICE = "http://localhost/test/dashDevice.php"

//the defaultvalues to store data
let defaultValues = UserDefaults.standard

override func viewDidLoad() {
    super.viewDidLoad()
    if let name = defaultValues.string(forKey: "parentId") {
        labelParentId.text = pname
    }
    Alamofire.request(URL_CHILD_DEVICE, method: .get).responseJSON {
        response in
        if response.data != nil {
            let json = JSON(data: response.data!)
            let name = json["name"][0]["class"].string
            if name != nil {
                print(name!)
            }
        }
    }
 }

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

Paulw11 07.05.2018 15:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
64
1

Ответы 1

Это действительно просто с протоколом Codable (см. Дополнительную информацию здесь и здесь). Во-первых, вам нужно создать структуру, представляющую вашу модель:

struct Person: Codable {
    let parentId: Int  // Or String. Not sure from your data.
    let childId: Int
    let name: String
    let `class`: Int  // This could be an enum.
}

Соответствие Codable позволит компилятору генерировать методы кодирования / декодирования, необходимые для анализа JSON. Все, что осталось - это попытаться разобрать его в вашем сетевом ответе.

Alamofire.request(URL_CHILD_DEVICE, method: .get).responseJSON { response in
    if let data = response.data {
        do {
            let person = try JSONDecoder().decode(Person.self, from: data)
            print(person.name)
        } catch {
            // handle errors
        }
    }
}

Другие вопросы по теме