Diana의 iOS 개발일기

[swift 함수정리] - JSONSerialization 클래스 본문

Swift/Swift

[swift 함수정리] - JSONSerialization 클래스

Diana_iOS 2021. 5. 6. 23:50

1. JSONSerialization

개인적으로 특정 서버에 HTTPRequest를 사용하여 로그인하여 그 계정에 해당하는 데이터를 HTTPResponse를 사용하여받아올 일이 생겼는데요, 이때 데이터의 Request와 Response를 JSON 형태로 하게 되었고, JSONSerialization이라는 클래스를 사용하며 용도가 궁금해졌습니다.

 

정의를 검색해보니 아래와 같이 나왔고 이를 간단히 해석해보면,

JSONSerialization은 주어진 object가 JSON 형태의 데이터로 변경이 가능한지를 알려주며 이를 위해서는 몇가지 속성이 필요하다고 하네요.

그 중 제게 필요한 정보는 모든 object들은 NSString, NSNumber, NSArray, NSDIctionary 또는 NSNull 형태여야 한다 라는 구문이였습니다.

 

저는 특정 계정에 대한 데이터들을 입력받은 뒤 이 데이터들을 아래와 같이 딕셔너리 형태로 변경해주었고

//요청할 json 형식
let param = ["mem_id": mem_id, "mem_pw": mem_pw, "user_cellphone_no": user_cellphone_no, "user_agent": user_agent, "push_id": push_id]
let paramData = try! JSONSerialization.data(withJSONObject: param)

JSONSerialization의 function중 하나인 data를 사용하여 해당 딕셔너리 데이터 값을 JSON형태로 변경해주었습니다.

data function에 대한 설명은 아래와 같습니다.

이후 HTTP 통신인 만큼, 가지고 있는 데이터들을 HTTP Body에 넣고, 헤더에는 따로 주어진 값을 요청하여 로그인을 시도하였습니다.

이때 사용한 클래스는 URLRequest와 URLSession이네요!

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = paramData
        
//헤더 설정
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")

요청 형식은 POST로 하였습니다.

그리고 헤더를 요청할 때 찾아보니까 application/json이라는 value를 통해서 json형태의 값을 요청하고 있음을 나타내 주어야 오류가 뜨지 않는다고 합니다.