일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Dijkstra
- java #자바
- DFS
- 백트랙킹
- 프로그래머스
- PYTHON
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 파이썬 #백준 #알고리즘 #코딩테스트
- dp
- react #리액트 #동빈나
- 백준 #파이썬 #알고리즘 #코딩테스트
- 파이썬
- css #웹 #생활코딩
- 백준
- 자바 #java
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- 투포인터
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 알고리즘
- java #자바 #동빈나
- BFS
- css #생활코딩 #웹
- react #리액트 #동빈나 #나동빈 #유튜브강의
- java #자바 #생활코딩
- 코딩테스트
- 백준 #알고리즘 #파이썬 #코딩테스트
- 재귀
- 다이나믹프로그래밍
- java #자바 #나동빈
- 다익스트라
Archives
- Today
- Total
커리까지
response.json() vs json.loads(response.content) 본문
728x90
SMALL
- api에서 데이터를 가져오고 data를 추출할 때 두 개의 차이점이 궁금했다.
- input에서 차이점이 있었다.
- 공통의 response를 받아서 비교해보자.
url = reverse('product-list')
response = self.client.get(url)
.json()
response_data = response.json()
print(type(response))
print(response_data)
print(type(response_data))
>
<class 'rest_framework.response.Response'>
[{'id': 1, 'name': '텀블러', 'cost': '10000'}]
<class 'list'>
- input으로 들어가야 하는 타입이 class이다.
json.loads(response.content)
response_data2 = json.loads(response.content)
print(type(response.content))
print(response_data2)
print(type(response_data2))
>
<class 'bytes'>
[{'id': 1, 'name': '텀블러', 'cost': '10000'}]
<class 'list'>
- input 타입이 bytes로 들어가야 한다.
.json()에 response.content로 한다면?
response_data3 = response.content.json()
print(response_data3)
>
AttributeError: 'bytes' object has no attribute 'json'
- bytes는 json속성이 없다고 오류를 반환한다.
json.loads(response)으로 한다면?
response_data3 = json.loads(response)
print(response_data3)
>
raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not Response
- class가 들어갔으니 다른 타입을 넣으라는 에러를 반환한다.
정리
공통점 | 차이점 |
---|---|
반환하는 값(여기서는 <class 'list'>)의 type는 같다. | input 값의 형태가 다르다. |
추가
- 만약 인코딩이 확실하게
UTF-8
이면json.loads(response.content)
를 써보고, 인코딩에 상관없이 json으로 변경할거면.json()
을 사용하면 된다.
728x90
LIST
'django' 카테고리의 다른 글
[Django REST framework] 휴대폰 인증 문자 모델 생성하기 (0) | 2022.03.23 |
---|---|
[네이버 클라우드] Simple & Easy Notification Service 인증키 생성하기 (0) | 2022.03.23 |
[Django REST framework] 7. 테스트 코드 작성 기본 (0) | 2022.03.06 |
[Django REST framework] 6. ViewSets & Routers (0) | 2022.03.05 |
[Django REST framework] 5: Relationships & Hyperlinked APIs (0) | 2022.03.04 |