swift 에서 json 파일 parsing 하기

스위프트에서 json 파일을 가져와서 parsing 하기가 어렵지 않다.

일단 json 형식은 다음과 같다.
[
    "strResult": SUCC,
    "r_list": {
        "h_dt": 20170824
        "t_list": {
            "t_info": {
                "h_value": 24
            }
        }
    },
    {
        "h_dt": 20170821
        "t_list": {
            "t_info": {
                "h_value": 21
            }
        }
    },
    "row_cnt": 2
]

이제 json 파일을 받아서 처리 할 수 있는 상태로 만들어 보자

do {
    let json = try JSONSerialization.jsonObject(with: data, options: .allwFragments) as! [String: Any]
    let r_list = json["r_list"] as! [[String: Any]]
    let row_cnt = json["row_cnt"] as! string
    print("row_cnt --> \(row_cnt)")

    // 1. flatMap 사용하여 추출
    let t_list = r_list.flatMap { $0["t_list"] as! [[String: Any]] }
    let t_info = t_list.flatMap { $0["t_info"] as! [[String: Any]] }
    let h_value = t_info.map { $0["h_value"] as! string }
    print("t_info count --> \(t_info.count), h_value --> \(h_value)")

    // 2. forEach 사용하여 추출
    r_list.forEach {
        let t_list = $0["t_list"] as! [[String: Any]]
        t_list.forEach {
            let t_info = $0["t_info"] as! [[String: Any]]
            t_info.forEach {
                let h_value = $0["h_value"] as! String
                print("h_value --> \(h_value)")
            }
        }
    }

    // 3. for in 사용하여 추출
    for item in r_list {
        let t_list = item["t_list"] as ! [[String: Any]]
        for item1 in t_list {
            let t_info = item1["t_info"] as! [[String: Any]]
            for item2 in t_info {
                let h_value = item2["h_value"] as! String
                print("h_value --> \(h_value)")
            }
        }
    }
} catch let error as NSError {
    print(error)
}

이 구문을 활용하면 어떤 자료 형태도 추출하여 수정할 수 있다.

댓글

이 블로그의 인기 게시물

한글 2010 에서 Ctrl + F10 누르면 특수문자 안뜰 때

아이폰에서 RFID 사용하는 방법

맥 화면이 안나올때 조치방법