committed by
GitHub
1 changed files with 34 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||
# JSON ํธํ ๊ฐ๋ฅ ์ธ์ฝ๋ |
|||
|
|||
๋ฐ์ดํฐ ์ ํ(์: Pydantic ๋ชจ๋ธ)์ JSON๊ณผ ํธํ๋ ํํ๋ก ๋ฐํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. (์: `dict`, `list` ๋ฑ) |
|||
|
|||
์๋ฅผ ๋ค๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํด์ผํ๋ ๊ฒฝ์ฐ์
๋๋ค. |
|||
|
|||
์ด๋ฅผ ์ํด, **FastAPI** ์์๋ `jsonable_encoder()` ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค. |
|||
|
|||
## `jsonable_encoder` ์ฌ์ฉ |
|||
|
|||
JSON ํธํ ๊ฐ๋ฅ ๋ฐ์ดํฐ๋ง ์์ ํ๋ `fake_db` ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค. |
|||
|
|||
์๋ฅผ ๋ค๋ฉด, `datetime` ๊ฐ์ฒด๋ JSON๊ณผ ํธํ๋๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ฏ๋ก ์ด ๋ฐ์ดํฐ๋ ๋ฐ์๋ค์ฌ์ง์ง ์์ต๋๋ค. |
|||
|
|||
๋ฐ๋ผ์ `datetime` ๊ฐ์ฒด๋ <a href="https://en.wikipedia.org/wiki/ISO_8601" class="external-link" target="_blank">ISO format</a> ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ `str`๋ก ๋ณํ๋์ด์ผ ํฉ๋๋ค. |
|||
|
|||
๊ฐ์ ๋ฐฉ์์ผ๋ก ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Pydantic ๋ชจ๋ธ(์์ฑ์ด ์๋ ๊ฐ์ฒด)์ ๋ฐ์ง ์๊ณ , `dict` ๋ง์ ๋ฐ์ต๋๋ค. |
|||
|
|||
์ด๋ฅผ ์ํด `jsonable_encoder` ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. |
|||
|
|||
Pydantic ๋ชจ๋ธ๊ณผ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ฐ๊ณ JSON ํธํ ๊ฐ๋ฅํ ๋ฒ์ ์ผ๋ก ๋ฐํํฉ๋๋ค: |
|||
|
|||
```Python hl_lines="5 22" |
|||
{!../../../docs_src/encoder/tutorial001.py!} |
|||
``` |
|||
|
|||
์ด ์์๋ Pydantic ๋ชจ๋ธ์ `dict`๋ก, `datetime` ํ์์ `str`๋ก ๋ณํํฉ๋๋ค. |
|||
|
|||
์ด๋ ๊ฒ ํธ์ถํ ๊ฒฐ๊ณผ๋ ํ์ด์ฌ ํ์ค์ธ <a href="https://docs.python.org/3/library/json.html#json.dumps" class="external-link" target="_blank">`json.dumps()`</a>๋ก ์ธ์ฝ๋ฉ ํ ์ ์์ต๋๋ค. |
|||
|
|||
๊ธธ์ด๊ฐ ๊ธด ๋ฌธ์์ด ํํ์ JSON ํ์(๋ฌธ์์ด)์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ ์ํฉ์์๋ `str`๋ก ๋ฐํํ์ง ์์ต๋๋ค. JSON๊ณผ ๋ชจ๋ ํธํ๋๋ ๊ฐ๊ณผ ํ์ ๊ฐ์ด ์๋ Python ํ์ค ๋ฐ์ดํฐ ๊ตฌ์กฐ (์: `dict`)๋ฅผ ๋ฐํํฉ๋๋ค. |
|||
|
|||
!!! note "์ฐธ๊ณ " |
|||
์ค์ ๋ก `jsonable_encoder`๋ **FastAPI** ์์ ๋ด๋ถ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๋ฐ ์ฌ์ฉํ์ง๋ง, ๋ค๋ฅธ ๋ง์ ๊ณณ์์๋ ์ด๋ ์ ์ฉํฉ๋๋ค. |
Loadingโฆ
Reference in new issue