상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Elixir에서 JSON 데이터를 처리하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/Elixir/ko'>Elixir</a>에서 JSON 데이터를 처리하는 방법은 여러 가지가 있으며, 주로 `Jason`과 `Poison`이라는 두 가지 라이브러리를 사용합니다. 이 두 라이브러리는 JSON 인코딩 및 디코딩을 위한 기능을 제공합니다. 여기서는 `Jason`을 중심으로 설명하겠습니다. `Jason`은 Elixir에서 가장 널리 사용되는 JSON 라이브러리로, 성능이 뛰어나고 사용하기 간편합니다. 1. Jason 설치하기 Elixir 프로젝트에서 `Jason`을 사용하려면 먼저 `mix.exs` 파일에 의존성을 추가해야 합니다. 다음과 같이 `deps` 함수에 `:jason`을 추가합니다. ```elixir defp deps do [ {:jason, "~> 1.2"} ] end ``` 그런 다음, 의존성을 설치합니다. ```bash mix deps.get ``` 2. JSON 인코딩 Elixir의 데이터 구조를 JSON 문자열로 변환하려면 `Jason.encode/1` 함수를 사용합니다. 예를 들어, 맵을 JSON으로 인코딩하는 방법은 다음과 같습니다. ```elixir data = %{name: "Alice", age: 30, city: "Wonderland"} json_string = Jason.encode!(data) IO.puts(json_string) 출력: {"name":"Alice","age":30,"city":"Wonderland"} ``` `Jason.encode/1` 함수는 JSON 문자열을 반환하며, `!`가 붙지 않은 버전은 `{:ok, json_string}` 또는 `{:error, reason}` <a href='https://sangseek.com/sangseeks/튜플/ko'>튜플</a>을 반환합니다. 3. JSON 디코딩 JSON 문자열을 Elixir의 데이터 구조로 변환하려면 `Jason.decode/1` 함수를 사용합니다. 예를 들어, JSON 문자열을 맵으로 디코딩하는 방법은 다음과 같습니다. ```elixir json_string = "{\"name\":\"Alice\",\"age\":30,\"city\":\"Wonderland\"}" {:ok, data} = Jason.decode(json_string) IO.inspect(data) 출력: %{"name" => "Alice", "age" => 30, "city" => "Wonderland"} ``` 마찬가지로, `Jason.decode!/1` 함수를 사용하면 <a href='https://sangseek.com/sangseeks/예외/ko'>예외</a>를 발생시키며, 성공적으로 디코딩된 경우에는 데이터 구조를 반환합니다. 4. JSON 옵션 `Jason.encode/2`와 `Jason.decode/2` 함수는 추가적인 옵션을 받을 수 있습니다. 예를 들어, JSON 문자열을 예쁘게 출력하고 싶다면 `pretty: true` 옵션을 사용할 수 있습니다. ```elixir json_string = Jason.encode!(data, pretty: true) IO.puts(json_string) ``` 5. 커스텀 인코더 및 디코더 Elixir에서는 커스텀 데이터 구조를 JSON으로 인코딩하거나 디코딩하기 위해 `Jason.Encoder`와 `Jason.Decoder`를 구현할 수 있습니다. 예를 들어, 다음과 같이 사용자 정의 구조체를 JSON으로 인코딩할 수 있습니다. ```elixir defmodule User do defstruct name: "", age: 0 defimpl Jason.Encoder do def encode(%User{name: name, age: age}, opts) do Jason.Encode.map(%{"name" => name, "age" => age}, opts) end end end user = %User{name: "Alice", age: 30} json_string = Jason.encode!(user) IO.puts(json_string) 출력: {"name":"Alice","age":30} ``` 6. 에러 처리 JSON 인코딩 및 디코딩 과정에서 발생할 수 있는 에러를 처리하는 것이 중요합니다. 예를 들어, 잘못된 JSON 문자열을 디코딩하려고 할 때는 `Jason.decode/1`이 `{:error, reason}`을 반환합니다. 이를 통해 에러를 적절히 처리할 수 있습니다. ```elixir case Jason.decode(invalid_json_string) do {:ok, data} -> IO.inspect(data) {:error, reason} -> IO.puts("Error decoding JSON: {reason}") end ``` 결론 Elixir에서 JSON 데이터를 처리하는 것은 `Jason` 라이브러리를 통해 간단하고 효율적으로 수행할 수 있습니다. JSON 인코딩 및 디코딩, 커스텀 인코더 및 디코더 구현, 에러 처리 등을 통해 다양한 JSON 관련 작업을 수행할 수 있습니다. 이러한 기능들은 API와의 상호작용, 데이터 저장 및 전송 등 다양한 상황에서 유용하게 사용될 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기