목차
Python에서 JSON 사용
(JSON → Python Dictionay) 변환
(Python Dictionary → JSON) 변환
결과 포맷 (= 출력 모양 변경) - 들여쓰기, 구분자변경
결과 정렬 - Key 기준 정렬
Python Dictionay와 JSON String 비교
JSON (JavaScript object notation)
1. 데이터를 (저장・교환) 위한 구문.
2. JS 객체 표기법으로 작성된 텍스트.
Python에서 JSON 사용
json 모듈 가져와 사용 가능.
import json
(JSON → Python Dictionay) 변환
json.loads() 메서드 : (JSON → Python Dictionay) 변환.
import json
# JSON 코드
x = '{ "id":"homzzang", "name":"홈짱", "level":10}'
# JSON → Python Dictionay ★
y = json.loads (x)
# Python dictionary
python(y) # {'id': 'homzzang', 'name': '홈짱', 'level': 10}
print(y["id"]) # homzzang
print(y["name"]) # 홈짱
print(y["level"]) # 10
(Python Dictionary → JSON) 변환
1. json.dumps() 메서드 : (Python Dictionary → JSON) 변환.
import json
# Python Dictionary
x = { "id":"homzzang", "name":"홈짱", "level":10}
# Python Dictionay → JSON ★
y = json.dumps (x, ensure_ascii=False )
# Python dictionary
print(y) # {"id": "homzzang", "name": "홈짱", "level": 10}
주의:
ensure_ascii=False 매개변수가 없으면,
한글 경우 아스키코드로 변환되어 출력됨.
2. (Python 객체 → JSON) 변환 시, 비슷한 유형으로 변환됨.
import json
# dict → Object
print(json.dumps({"name": "sinbi", "level": 10}))
# {"name": "sinbi", "level": 10}
# list → Array
print(json.dumps(["HTML", "CSS"]))
# ["HTML", "CSS"]
# tuple → Array
print(json.dumps(("JS", "JQUERY")))
# ["JS", "JQUERY"]
# str → String
print(json.dumps("홈짱닷컴 Homzzang.com", ensure_ascii=False))
# "홈짱닷컴 Homzzang.com"
# int → Number
print(json.dumps(34))
# 34
# float → Number
print(json.dumps(12.34))
# 12.34
# True → true
print(json.dumps(True))
# true
# False → false
print(json.dumps(False))
# false
# None → null
print(json.dumps(None))
# null
[예제] (여러 타입이 들어간 Dictionary → JSON) 변환.
import json
x = {
"name": "sinbi",
"level": 10,
"good": True,
"nogood": False,
"favorite": ("코딩","일본어"),
"singo": None,
"code": [
{"lang": "HTML", "lv": 3},
{"lang": "CSS", "lv": 4}
]
}
# Python → JSON:
y = json.dumps(x, ensure_ascii=False)
# y 타입: JSON string
print(y)
결과값:
{"name": "sinbi", "level": 10, "good": true, "nogood": false, "favorite": ["코딩", "일본어"], "singo": null, "code": [{"lang": "HTML", "lv": 3}, {"lang": "CSS", "lv": 4}]}
결과 포맷 (= 출력 모양 변경) - 들여쓰기, 구분자변경
1. indent 매개변수 : 들여쓰기 (예) 4칸 들여쓰기
json.dumps(x, ensure_ascii=False, indent=4 )
import json
x = {
"name": "sinbi",
"level": 10,
"good": True,
"nogood": False,
"favorite": ("코딩","일본어"),
"singo": None,
"code": [
{"lang": "HTML", "lv": 3},
{"lang": "CSS", "lv": 4}
]
}
# Python → JSON:
y = json.dumps(x, ensure_ascii=False, indent=4 )
# y 타입: JSON string
print(y)
결과값:
{
"name": "sinbi",
"level": 10,
"good": true,
"nogood": false,
"favorite": [
"코딩",
"일본어"
],
"singo": null,
"code": [
{
"lang": "HTML",
"lv": 3
},
{
"lang": "CSS",
"lv": 4
}
]
}
2. separators 매개변수 : 구분자 변경.
※ separators = ("요소간구분자", "키값간구분자")
※ 기본값: (", ", ": ") 즉, 쉼표와 콜론 뒤 공백 이용해 구분.
※ 예제: (". ", " = ") 즉, 마침표와 앞뒤 공백 있는 등호로 구분.
json.dumps(x, ensure_ascii=False, indent=4, separators=(". ", " = ") )
import json
x = {
"name": "sinbi",
"level": 10,
"good": True,
"nogood": False,
"favorite": ("코딩","일본어"),
"singo": None,
"code": [
{"lang": "HTML", "lv": 3},
{"lang": "CSS", "lv": 4}
]
}
# Python → JSON:
y = json.dumps(x, ensure_ascii=False, indent=4, separators=(". ", " = ") )
# y 타입: JSON string
print(y)
결과값:
{
"name" = "sinbi".
"level" = 10.
"good" = true.
"nogood" = false.
"favorite" = [
"코딩".
"일본어"
].
"singo" = null.
"code" = [
{
"lang" = "HTML".
"lv" = 3
}.
{
"lang" = "CSS".
"lv" = 4
}
]
}
결과 정렬 - Key 기준 정렬
sort_keys =True 매개변수 : key 오름차순으로 정렬.
json.dumps(x, ensure_ascii=False, indent=4, separators=(". ", " = "), sort_keys=True )
import json
x = {
"name": "sinbi",
"level": 10,
"good": True,
"nogood": False,
"favorite": ("코딩","일본어"),
"singo": None,
"code": [
{"lang": "HTML", "lv": 3},
{"lang": "CSS", "lv": 4}
]
}
# Python → JSON:
y = json.dumps(x, ensure_ascii=False, indent=4, separators=(". ", " = "), sort_keys=True )
# y 타입: JSON string
print(y)
결과값:
{
"c ode" = [
{
"lang" = "HTML".
"lv" = 3
}.
{
"lang" = "CSS".
"lv" = 4
}
].
"f avorite" = [
"코딩".
"일본어"
].
"g ood" = true.
"l evel" = 10.
"n ame" = "sinbi".
"n ogood" = false.
"s ingo" = null
}
※ 변수 정의 시와 출력 시의 따옴표 모양에 주의.
Python Dictionay와 JSON String 비교
[예제] (작은따옴표・큰따옴표 Dictionary → JSON) 변환 후 출력.
import json
a1 = {'name':'홈짱닷컴', 'host':'Homzzang.com', 'open': '2012'}
# 작은따옴표 사용한 Dictionary 정의
a2 = json.dumps(a1, ensure_ascii=False)
# Python Dictionary → JSON String 변환.
b1 = {"name":"홈짱닷컴", "host":"Homzzang.com", "open": "2012"}
# 큰따옴표 사용한 Dictionary 정의
b2 = json.dumps(b1, ensure_ascii=False)
# Python Dictionary → JSON String 변환.
print(a1) # 작은따옴표 Dictionay 출력
# {' name ' : '홈짱닷컴', 'host': 'Homzzang.com', 'open': '2012'}
print(type(a1))
<class 'dict'>
print(a2) # JSON String 출력
# {"name" : "홈짱닷컴", "host": "Homzzang.com", "open": "2012"}
print(type(a2))
# <class 'str'>
print(b1) # 큰따옴표 Dictionary 출력.
# {'name' : '홈짱닷컴', 'host': 'Homzzang.com', 'open': '2012'}
print(type(b1))
# <class 'dict'>
print(b2) # JSON String 출력
# {"name" : "홈짱닷컴", "host": "Homzzang.com", "open": "2012"}
print(type(b2))
# <class 'str'>
PS.
주의1.
ensure_ascii=False 매개변수가 없으면,
한글 경우 아스키코드로 변환되어 출력됨.
(예) 홈짱닷컴 경우, \ud648\uc9f1\ub2f7\ucef4 형태로 출력.
주의2.
Python Dictionary와 JSON String은 비슷하니,
반드시 type() 메서드로 데이터타입 확인 후 작업 .
PS. 아주 깊게 공부하실 분만....
json.load (fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
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)
주소 복사
랜덤 이동