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)
}
이 구문을 활용하면 어떤 자료 형태도 추출하여 수정할 수 있다.
일단 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)
}
이 구문을 활용하면 어떤 자료 형태도 추출하여 수정할 수 있다.
댓글
댓글 쓰기