I. 인코딩과 디코딩
(Python 기준)
Encoding
Python 객체를 JSON Data로 쓰는 동작
Decoding
읽은 JSON Data를 Python 객체로 저장
import json
a = dict()
a['name'] = 'sanghi'
a['price'] = 4900
a['brand'] = 'mcdonald'
# b는 json(인코딩)
b = json.dumps(a, indent=4) # indent : formatting
# c는 딕셔너리(디코딩)
c = json.loads(b)
print(c)
파일 전체를 읽어서 출력/ 저장하기
# 읽은 파일 출력하기
f1 = open('mc.json', 'r')
f2 = open('output.txt', 'w')
txt = f1.read()
f2.write(txt)
print(txt)
f2.close()
f1.close()
# 읽은 파일 저장하기
f1 = open('mc.json', 'r')
f2 = open('output.txt', 'w')
txt = ''
with open('mc.json', 'r') as f1:
txt = f1.read()
with open('output.txt', 'w') as f2:
f2.write(txt)
f2.close()
f1.close()
[과제] JSON Decoding 후 출력
- 파일 출력 -> output.txt
- 1) window 객체에서 key만
- 2) image 객체에서 value만
- 3) text 객체에서 items 메서드를 사용해 key, value 세트
- 파일에 출력하기
import json
txt = ''
with open('mc.json', 'r') as f1:
txt = f1.read()
# json을 dict로 디코딩
di = json.loads(txt)
with open('output.txt', 'w') as f2:
f2.write(' '.join(str(x) for x in di["widget"]["window"].keys()) + '\n')
f2.write(' '.join(str(x) for x in di["widget"]["image"].values()) + '\n')
f2.write(' '.join(str(x) for x in di["widget"]["text"].items()))
# string만 출력가능 !
# print(di["widget"]["window"].keys())
# print(di["widget"]["image"].values())
# print(di["widget"]["text"].items())
output.txt
title name width height
Images/Sun.png sun1 250 250 center
('data', 'Click Here') ('size', 36) ('style', 'bold') ('name', 'text1') ('hOffset', 250) ('vOffset', 100) ('alignment', 'center') ('onMouseUp', 'sun1.opacity = (sun1.opacity / 100) * 90;')
II. JSON 파일 파싱하기
Awesome JSON Datasets
아래 링크에서 다운
https://github.com/jdorfman/awesome-json-datasets
import json
import requests # 데이터를 응답받기 위해 사용하는 모듈
url = "http://api.tvmaze.com/singlesearch/shows?q=narcos&embed=episodes"
r = requests.get(url)
print(r.text) # json객체로 프린트
'IVS > Python 프로그래밍' 카테고리의 다른 글
[Python] Class, 상속, 오버라이딩 (1) | 2024.12.20 |
---|---|
[JSON] Project1- 파이썬을 활용한 API 데이터 수집 (1) | 2024.12.18 |
[JSON] 기본 문법 (2) | 2024.12.18 |
[Python] 리스트, 함수, 딕셔너리, 튜플 (0) | 2024.12.17 |
[Python] 변수, 입출력, 데이터 타입, 아스키코드 (2) | 2024.12.16 |