안녕하세요 :) 소들입니다!!!!!!!!!
HTTPS 통신을 한다 하면 절대 빠지지 않는 단어..
JSON..누구니 넌.. 에 대한 포스팅입니다.. :)))
뭔가 알거같지만 설명해보라하면
뭐라 설명할지 모른느 그런 애매모호함이 싫어서
깔끔하게 정리해보려고 해요 💩
모든 포스팅은 편의 말투로 합니다~!!
1. JSON이란..?
JSON은 뭐의 약자냐면
JavaScript Object Notation
인데, 원래는자바스크립트 언어에서
객체 속성을 표현하기 위한 방법으로 사용하기 시작한 데이터 구조임!!
근데 써보니까 이 제이슨이 너무 좋은 것임;;;
그래서 다른 언어들도 JSON을 사용하기 시작해서, 지금처럼 유명해진 것임 ㅎㅎ
뭐.. JSON을 정의를 굳이 내리자면
간결하고 쉽게 데이터를 나타내는 방법 중 하나
정도가 되게따👀
근데 이 JSON에 사용되는 데이터 구조는 다음과 같이 크게 2가지 종류임!!!
1-1. JSON 객체
이런 식으로 이름이 달리면 참 재미 없어지는 것 같음..
JSON 객체는 쉽게 말해
"Key" : Value
로 이루어진 데이터들의 집함임!
딱 보면 생각나는거... Dictionary 생각나지 않음?? 같은 성격임!
자 이 JSON 객체는 말이지
중괄호 { 로 시작해서, 중괄호 } 로 끝나고,
{
}
|
이 중괄호 사이에 Key-Value가 쌍을 이루어 이렇게 들어 가는 것임.
이때, Key-Value는 : (colon)을 이용해서 다음과 같이 표현함!!!!
{
"name" : "Sodeul"
}
|
이런 식으루
근데 만약 Key-Value를 더 추가하고 싶다면,
,(comma)를 이용해서 추가해주면 됨!!
{
"name" : "Sodeul",
"age" : 4
}
|
이것이 바로 JSON 객체임!!!!
앞서 잠깐 언급했지만, JSON 객체는 Swift의 Dictionary 성격을 가지고 있기 때문에,
Swift에서 이 JSON 객체를 다룰 땐 Dictionary 계열의 자료형을 사용함!!!
(머 DIctionary, NSDictionary, NSMutableDictionary 등등)
근데 Dictionary가 뭐겠음??
배열과 달리 index가 필요 없이 Key에 해당하는 Value만 제대로 매칭되면
되는 거 아니겠음?? 👀
따라서, JSON 객체를 생성하고 만약 출력 했는데,
내가 생성한 Key-Value 쌍이 순서대로 되어있지 않더라도 문제가 되지 않으니 걱정 노노!
JSON 객체에선 순서가 상관 없다 ㅎㅎㅎㅎ
자, 근데 이 Key-Value 쌍을 다룰 때 알아 둘 것이 있음ㅎㅎ
Key-Value의 타입
자, 방금 우리가 생성한 Key-Value의 타입은
문자열 : 문자열 타입이었잖음??
근데 이 Key-Value의 타입은 아무 타입이나 막 쓰면 안 되고,
미리 지정된 타입만 쓸 수 있음. 그 지정된 타입이 무엇이냐면,
이런 것들임
이건 내가 정한 게 아니라 지켜야되는 타입 조건임!!!
불공평하게도, Key의 타입은 무조건 문자열(String)만 가능하고,
Value 타입은 꽤나 다양해 보임 ㅎㅎㅎㅎㅎ NULL 값도 가능하고
근데 타입 중에
Value 타입으로 JSON 객체 타입이 된단 게 이해 안 갈 수도 있기에,
우리가 지금 배우고 있는 이 JSON 객체 또한 Value 값에 다음과 같이 포함될 수 있음!!
{
"name" : "Sodeul",
"age" : 4,
"dad" : {
"name" : "SodeulPaPa",
"age" : 40
}
}
|
이렇게 ㅎㅎㅎㅎ
이런 식으로 사용되는 게 JSON 객체임!!!!
1-2. JSON 배열
JSON 객체에서 Sodeul에 대한 '사람 한 명'에 대한 정보를 담기엔 더할 나위 없이 좋았음.
근데 만약 내가 '여러 명의 사람의 정보'를 데이터로 만들고 싶다면,
어떻게 해야할까???
이때 사용하는 것이 바로 JSON 배열임!
우리가 평소 사용하던 배열과 똑같다 생각하면 됨!!
자 이 JSON 배열은 말이지,,
대괄호 [ 로 시작해서, 대괄호 ] 로 끝나고,
[
]
|
이 대괄호 사이에 원하는 아이템을 넣어주면 됨!!!!
[
{
"name" : "Sodeul",
"age" : 4
}
]
|
나는 만약 2명의 사람 데이터를 다루고 싶다?
하면 JSON 객체와 똑같이 ,(comma)를 이용해서 나열하면 됨!!
[
{
"name" : "Sodeul",
"age" : 4
},
{
"name" : "Sossam",
"age" : 8
}
]
|
이때, 배열 안에 들어가는 아이템의 타입은 매우 다양한데
뭐 이런 것들이 가능함 :)
배열 아이템으로 또 JSON 배열이 들어갈 수도 있음!!!
대충 예제로 보여주겠음
// 정수
[1, 3, 5, 7, 9]
// 문자열
["a", "b", "c", "d", "e"]
//하위에 JSON 배열이 포함된 경우
[
["a", "b", "c", "d", "e"],
["A", "B", "C", "D", "E"],
["가", "나", "다", "라", "마"]
]
//하위에 JSON 객체를 나열한 경우
[
{"name" : "Sodeul"},
{"name" : "Sossam"}
]
|
이런 식으로 사용할 수 있는게 JSON 배열임!!
물론, JSON 배열을 다룰 때 Swift는 Array 계열의 자료형을 사용함!
배열인 만큼, Index가 중요하기 때문에, JSON Object처럼 순서가 뒤바뀔 일이 없음!
자, 이런 식으로 우리가 원하는 Text 형태의 데이터를 쉽고 간편하게!!
만들 수 있는 게 바로 JSON인 것임 ㅎㅎ
'iOS > Swift' 카테고리의 다른 글
Swift) 함수(Function) 정복하기 (1/3) - 함수? 메서드? 클로저? (13) | 2020.12.15 |
---|---|
Swift) Method Swizzling을 알아보자 (3) | 2020.12.14 |
Swift) 싱글톤 패턴(Singleton Pattern) (23) | 2020.12.02 |
Swift) Codable - JSON을 쉽게 Encoding / Decoding 하자 (9) | 2020.11.30 |
Swift) Localizing - 다국어 처리하기 (16) | 2020.11.28 |