기본적으로 python에서 json 타입은 없다.
json.dump() 를 해버리면 이 데이터의 타입은 str
보통 request.get() 같은 통신을 할때 웹에서 json 타입의 데이터를 받아와 처리해야 하는 경우가 많은데,
str타입이라 특정 키값에 접근하기 쉽지 않다.
접근하는 방법은 json(str) -> dictionary로 변환 후 key에 접근...
아래와 같이 하면 dictionary 타입으로 변환된다.
json.loads (json(str) -> dictionary)
import json
import requests
url = 'localhost:8000/api/example'
res = requests.get(url)
type(res.text) # str
res.['key-name'] # 오류
res = json.loads(res.text)
type(res.text) # dictionary
res.['key-name'] # 가능
python에서 dictionary 타입은 KEY-VALUE 형태이기 때문에 json의 키값에 접근하기 용이하다.
이런저런 설정을 한 후에 다시 json 형태로 웹에 전송해야한다면 json.dumps()를 사용하면 된다.
str타입으로 변환하지 않고 request를 보내면 당연히 에러가 난다.
json.dumps (dictionary -> json(str))
jsondata = json.dumps(data, indent=4) # indent는 그저 가독성을 위한것..
requests.post(url, headers= headers, data = jsondata)
이렇게 str타입으로 변환 후 post를 보내야 함..
ps.
json.dumps 와 json.dump의 차이는 저장되어있는 json파일과 메모리상에있는 json파일의 차이라고 한다.
'공부 > Python' 카테고리의 다른 글
[Python] @Decorator 파이썬 @데코레이터 (2) | 2021.06.11 |
---|---|
[python] opencv를 활용한 이미지에서 표 객체 찾기(table detection) (0) | 2021.05.31 |
[python] 문자열을 변수로 사용하고 싶을때 eval() (1) | 2021.05.14 |
[python] PDF에서 Text 추출하기 (Extract elements from a PDF using Python) (0) | 2021.03.10 |
[python] ModuleNotFoundError: No module named 'pip' pip 사라짐 (0) | 2021.01.11 |
댓글