본문 바로가기
프로그래밍

JsonUtility 유니티에서 가볍고 빠르게 JSON 직렬화 하기

by bantomak 2025. 3. 24.
반응형

JsonUtility란?

유니티 엔진 자체적으로 지원하는 경량 JSON 직렬화/역직렬화 도구이다. UnityEngine 네임스페이스에 포함되어 있으며, 별도 패키지 없이 바로 사용이 가능하다.

직렬화(Serialize) 😎 객체 -> Json 문자열

직렬화를 진행하면 객체가 json 형태의 string 문자열로 변환된다.

[Serializable]
public class Player
{
    public string name;
    public int score;
}

var data = new Player { name = "Alice", score = 100 };

string json = JsonUtility.ToJson(data);
Debug.Log(json);  // 출력: {"name":"Alice","score":100}

역직렬화(Deserialize) 😎 Json 문자열 -> 객체

string json = "{\"name\":\"Alice\",\"score\":100}";
PlayerData data = JsonUtility.FromJson<PlayerData>(json);
Debug.Log(data.name);  // 출력: Alice

📌 JsonUtility 장점

  • 매우 빠르고 가볍다. (Unity 내부 C++ 코드로 구현)
  • 사용법이 아주 간단하다. (ToJson, FromJson)
  • Unity에 내장된 기능이라서 별도의 라이브러리가 필요하지 않다.

⚠️ JsonUtility 단점 및 제한사항

  • 간단한만큼 지원되는 기능이 거의 없다.
  • 중첩된 클래스, 제네릭, 인터페이스 지원 미흡
  • public + [Serializable] 필요, private 필드는 직렬화되지 않음

JsonUtility vs Newtonsoft.Json

정리하자면

  • Unity 엔진에서 간단하게 Json 직렬화/역직렬화 하기에 아주 좋은 도구
  • 객체 -> Json 문자열 : JsonUtility.ToJson(obj);
  • Json 문자열 -> 객체 : JsonUtility.FromJson(json);
  • 사용 조건 : public + [Serializable] 

TestJsonUtility.cs
0.00MB

같이 읽으면 좋은 글

 

Json 파일 형태에 따른 역직렬화 코드 예제

Object로 구성된 Json 파일{ "LengthMin": 1, "LengthMax": 12, "CharacterId": 100}역직렬화 코드 예제using var reader = new StreamReader(fullPath);string json = reader.ReadToEnd();// T로 디시리얼라이징var result = JsonSerializer.Deseriali

jettstream.tistory.com

댓글