[파이썬] JSON
by mini_min[파이썬] JSON
🖋️ JSON 변환
: 파이썬 dict 객체를 JSON 형식의 문자열로 반환
JSON 모듈의 dumps 함수를 이용한다. dict 파이썬 객체를 json 형식의 문자열로 반환한다.
한글로 출력하려면 ensure_ascii 를 사용한다.
import json #파이썬 객체를 JSON으로 변환 : 인코딩 # json 모듈의 dumps 함수 이용 # dict 객체 std = { 'hak':'1001', 'name':'이자바', 'score':[ {'subject':'kor', 'grade':4.0}, {'subject':'eng', 'grade':3.5}, {'subject':'mat', 'grade':4.5} ] } #파이썬 dict 객체를 json 형식의 문자열로 반환 json_str = json.dumps(std) #한글은 유니코드로 변환된다. print(json_str) print("----------------") # 한글을 유니코드가 아닌 한글로 변환 json_str = json.dumps(std, ensure_ascii=False) print(json_str) print("----------------") print(type(json_str)) #<class 'str'>
: JSON 문자열을 파이썬 객체로 변환 (디코딩) 은 JSON 모듈의 oads 함수를 이용한다.
import json #JSON 형식의 문자열을 Python 객체로 변환 : 디코딩 # : json 모듈의 oads함수를 이용 json_str = """ { "hak":"1001", "name":"이자바", "score":[ {"subject":"kor", "grade":4.0}, {"subject":"eng", "grade":3.5}, {"subject":"mat", "grade":4.5} ] } """ # json 형식의 문자열을 파이썬 객체로 변환 std_data = json.loads(json_str) print(std_data) print("---------") print(type(std_data)) print(std_data['hak']) print(std_data.get("name")) print(std_data.get("score")) print("-----------") for item in std_data["score"]: print(item.get("subject"), item["grade"])
: 파이썬 객체를 JSON 형식의 문자열로 파일에 저장한다.
# Python 객체를 JSON 형식의 문자열로 파일에 저장하기 import json json_obj = { #dict "id":1, "username":"이자바", "email":"test@test.com", "address":{ "addr1":"서울시 마포구", "addr2":"몰라로 100", "zipcode":"12345" }, "admin":False, "hobbies":None } pathname = "C:/source/data/output.json" with open(pathname, "w", encoding="utf-8") as f: # Python 객체를 JSON 형식의 문자열로 파일에 저장하기 json.dump(json_obj, f, ensure_ascii=False, indent=2) print("파일 저장 완료@")
: 로드하기 . load() 사용
import json #load() : JSON 형식의 문자열로 저장된 파일을 읽어 파이썬 객체로 불러온다. pathname = "C:/source/data/output.json" with open(pathname, "r", encoding="utf-8") as f: json_object = json.load(f) print(json_object) print(type(json_object)) #<class 'dict'>
: csv 파일 읽어 json 파일로 저장하기
reader 로 csv 파일을 읽고, 첫줄 컬럼이름은 list 에 저장, 두번째 줄부터 zip 을 묶어서 json으로 dumps 한다.
# csv 파일을 json 파일로 저장하기 import csv import json input_file = "C:/source/data/score.csv" output_file = "C:/source/data/score.json" with open(input_file, "r", encoding="utf-8", newline="") as i_file, \ open(output_file, "w", encoding="utf-8", newline="") as o_file: reader = csv.reader(i_file) #print(type(reader)) #<class '_csv.reader'> # 첫줄 컬럼이름을 읽어 list에 저장 col_names = next(reader) # print(col_names) # 두번째 줄부터 zip으로 묶어서 json으로 dumps # 키컬럼,값 형태로 만드는걸 zip이 해준다. for cols in reader: doc = {col_names:col for col_names, col in zip(col_names, cols)} print(json.dumps(doc, ensure_ascii=False), file=o_file) print("파일 변환 완료..")
# csv 파일을 json 파일로 저장하기 import csv import json input_file = "C:/source/data/score.csv" output_file = "C:/source/data/score.json" with open(input_file, "r", encoding="utf-8", newline="") as i_file, \ open(output_file, "w", encoding="utf-8", newline="") as o_file: reader = csv.DictReader(i_file) #print(type(reader)) #<class 'csv.DictReader'> for row in reader: #print(type(row)) json_str = json.dumps(row, ensure_ascii=False) o_file.write(json_str+"\n") print("파일 변환 완료..")
: json 파일을 csv 파일로 저장한다.
# json 파일을 csv 파일로 저장하기 import csv import json input_file = "C:/source/data/score.json" output_file = "C:/source/data/score.csv" with open(input_file, "r", encoding="utf-8", newline="") as i_file, \ open(output_file, "w", encoding="utf-8", newline="") as o_file: data = [] for line in i_file: s = json.loads(line) data.append(s) csvwriter = csv.writer(o_file) csvwriter.writerow(data[0].keys()) for line in data: csvwriter.writerow(line.values()) print("파일 변환 완료..")
블로그의 정보
개발자 미니민의 개발로그
mini_min