*JSON : JavaScript Object Notation
- 딕셔너리와 리스트를 중첩해 놓은 것과 비슷한 구조를 가지고 있음.
- 키와 값을 콜론으로 연결함. key:value ex. {"name" : "혼자 공부하는 데이터 분석"}
△ 키와 값에 문자열을 쓰려면 항상 큰 따옴표로 감싸줘야함.
- 파이썬의 딕셔너리와 잘 호환됨. (하지만 웹기반 API로 데이터를 전달할때는 텍스트로 전달해야함)
- 비교적 읽기 쉽고 간결하기 때문에 최근 웹 기반 API에서 많이 사용함.
d = {"name": "이것이 JSON의 값입니다."}
print(d['name'])
* JSON 패키지
1. json.dumps() : 파이썬객체를 JSON 형식에 맞는 텍스트로 바꿀 때 ▶하고나면 문자열로 바뀐다구여
2. json.loads() : JSON 문자열을 파이썬 객체로 변환.
- 왜 바로 파이썬 객체로 안하고 문자열로 바꿔서 전송하냐구요?
▶ 웹 기반 API가 사용하는 HTTP 프로토콜이 텍스트 기반이라서요. 그래서 데이터를 전송하려면 객체를 텍스트로 바꿔야해. 이렇게 수정가능한 형태로 변환하는걸 직렬화(serialization), 다시 객체로 바꾸는걸 역직렬화(deserialization)
▲ ensure_ascii = False로 한 이유는 딕셔너리에 한글이 포함되어 있어서. 저장된 문자 그대로 출력할 수 있게
*JSON 배열 : 여러 개의 JSON 객체를 합쳐서 하나의 대괄호 안에 나열해서 만든 배열. 콤마(,)로 나열
▷ 문자열이 길면 세겹따옴표를 쓰자 (""") 이런 기본은 기억해야한다 인간적으로
#복잡한 데이터 구조 (문자열 형식의 JSON 타입이라고 가정)
d4_str ="""
[
{"name" : "cat", "age" : 3},
{"name" : "dog", "age" : 4}
]
"""
#파이썬 데이터 타입으로 변환 > 데이터를 가공하기 쉽게 하기 위해서
import json
d4 = json.loads(d4_str) #파이썬 데이터타입(이 경우는 리스트형으로 변환)
print(d4[0]["name"]) #d4 리스트의 첫번째 요소({"name" : "cat", "age" : 3})는 딕셔너리 구조이고 그 딕셔너리의 "name"키에 해당하는 값 출력
# JSON 문자열을 조금 더 간편하게 그리고 한꺼번에 변환(가공하기 쉽게)
import pandas as pd
print(pd.read_json(d4_str)) #1. JSON 문자열을 판다스의 DataFrame 형식(행, 열)으로 변환
print(pd.DataFrame(d4)) #2. 파이썬 객체(여기서는 리스트)를 DataFrame형식으로 전환
3. read_json() : JSON 문자열을 데이터프레임으로 변환
3-1 . pd.DataFrame() : JSON 문자열을 파이썬 객체로 만든다음 DataFrame 클래스를 이용해도 ㅇㅋ
▼ 위에 있는 것을 그대로 가져다가 실행해보았다. 각 행에 잘 매핑mapping되었다.