1. JSON 데이터를 처리하기 위해 사용되는 파이썬의 내장 모듈
2. import json 로딩
3. 함수
(1) json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
1) json 파일을 읽어 dict 형태로 저장
2) JSON 문서를 포함한 read()를 지원하는 텍스트 파일이나 바이너리 파일를 파이썬 객체로 역 직렬화(파일을 읽을 때 사용)
3) parse_float가 지정되면, 디코딩 될 모든 JSON float의 문자열로 호출
4) parse_int가 지정되면, 디코딩 될 모든 JSON int의 문자열로 호출
(2) json.loads(): 파일 대신 object (문자열, byte arrray)에서 파이썬 객체로 역직렬화(문자열을 읽을 때 사용)
import json
# 서울시 관광지 정보 읽기
jsonTP = json.loads(open('서울_관광지.json', 'r', encoding='utf-8').read()) # dict로 디코딩
# open('서울_관광지.json', 'r', encoding='utf-8').read()의 타입은 문자열
(3) json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
1) 파이썬 객체를 JSON 파일로 저장하는 함수
2) .write()fp.write()를 지원하는 파일류 객체로 직렬화
3) indent가 음이 아닌 정수나 문자열이면, JSON 배열 요소와 오브젝트 멤버가 해당 들여 쓰기 수준으로 인쇄
4) sort_keys=True: 딕셔너리의 출력이 키로 정렬(기본값: False)
(4) json.dumps(): file 대신 string으로 직렬화
# json데이터 처리
import json
json_file = "./pdex14.json"
json_data = {}
def readData(filename):
f = open(filename, 'r', encoding="utf-8")
lines = f.read()
f.close()
print(lines)
return json.loads(lines) #decoding: str -> dict
def main():
global json_data
json_data = readData(json_file)
print(type(json_data))
d1 = json_data['직원']["이름"]
d2 = json_data['직원']["직급"]
d3 = json_data['직원']["전화"]
print('이름: ', d1,', 직급: ',d2,', 전화: ', d3)
"""
def main():
json = readData(json_file)
print(type(json))
d1 = json['직원']["이름"]
d2 = json['직원']["직급"]
d3 = json['직원']["전화"]
print('이름: ', d1,', 직급: ',d2,', 전화: ', d3)
"""
if __name__ == "__main__":
main()
# json으로 제공된 강남구 도서관 정보 읽기
# BeautifulSoup 안써도됨
import urllib.request as req
import json
url = "http://openapi.seoul.go.kr:8088/sample/json/SeoulLibraryTime/1/5/"
plainText = req.urlopen(url).read().decode()
print('type(plainText):', type(plainText))
#메모리 낭비를 방지하기위해 띄어쓰기 없이 한줄로 쭉~ 나옴
jsonData = json.loads(plainText)
print('type(jsonData):', type(jsonData))
print('jsonData:\n', jsonData)
print('jsonData["SeoulLibraryTime"]["row"][0]["LBRRY_NAME"]:', jsonData["SeoulLibraryTime"]["row"][0]["LBRRY_NAME"])
libData = jsonData.get("SeoulLibraryTime").get("row") # = jsonData["SeoulLibraryTime"]["row"]
print('libData:\n', libData)
name = libData[0].get('LBRRY_NAME') # = jsonData["SeoulLibraryTime"]["row"][0]["LBRRY_NAME"]
print('name:', name)
print()
for data in libData:
name = data.get('LBRRY_NAME')
tel = data.get('TEL_NO')
addr = data.get('ADRES')
print(name,'\t', tel,'\t', addr)
직렬화 및 역직렬화 참고 [python] serialize (직렬화) | 코딩장이 (itholic.github.io)
20. Selenium (0) | 2021.05.07 |
---|---|
19. schedule 모듈 (0) | 2021.05.07 |
17. BeautifulSoup (0) | 2021.05.06 |
16. pandas - (2) DataFrame (0) | 2021.05.02 |
16. pandas - (1) 개요, Series (0) | 2021.05.01 |