성능(속도): 직렬화/역직렬화 속도가 Newtonsoft.Json에 비해 훨씬 빠름. (모바일 환경에서 4~6배)
Unity 내장: 별도의 패키지 설치나 외부 파일(DLL) 추가가 필요 없음.
Unity 타입 지원: Vector3, Quaternion, Color 등 유니티에서 사용하는 구조체들을 기본적으로 지원
IL2CPP 지원: IL2CPP 빌드 환경에서 안정적으로 동작
제한적인 기능:
Public Field만 지원: 프로퍼티(Property)나 비공개 필드(Private Field)는 직렬화/역직렬화할 수 없음.
제한적인 타입: Dictionary<TKey, TValue>나 중첩된 배열은 기본적으로 지원하지 않음. (Wrapper 클래스 필요)
상속 및 다형성 미지원: 베이스 클래스/인터페이스 객체의 파생 클래스 직렬화에 제한이 있음.
커스텀 컨버터 불가: 복잡한 변환 규칙을 직접 정의할 수 없음.
최상위 객체 제한: JSON 문자열의 최상위가 객체({}) 형태여야 하며, 배열([]) 형태를 직접 직렬화/역직렬화하려면 Wrapper 클래스가 필요.
com.unity.nuget.newtonsoft-json로 제공강력한 기능 및 유연성:
모든 필드/프로퍼티 지원: Public, Private 필드, 그리고 프로퍼티 모두 직렬화/역직렬화가 가능. (특정 어트리뷰트 사용)
광범위한 타입 지원: Dictionary<TKey, TValue>, 다차원 배열, List 등을 Wrapper 클래스 없이 처리할 수 있음.
다형성 지원: 상속 관계에 있는 클래스의 직렬화 및 역직렬화가 가능.
LINQ to JSON: JObject, JArray 등의 타입을 사용하여 JSON 데이터를 동적으로 생성, 수정, 탐색하는 등 데이터 가공이 쉽움.
커스텀 컨버터 지원: 복잡한 변환 로직을 직접 구현할 수 있음.
업계 표준: .NET 생태계에서 사실상의 표준으로 널리 사용되어 관련 자료가 풍부.
IL2CPP 지원: 유니티 공식 패키지로 제공되어 IL2CPP 빌드 환경에서 안정적으로 동작.
상대적으로 느린 속도: JsonUtility에 비해 직렬화/역직렬화 성능이 상대적으로 느림.
외부 패키지: 유니티에 내장되어 있지 않으므로 Package Manager를 통해 설치 필요.
Unity 타입 문제: Vector3, Quaternion 등 유니티 구조체를 기본적으로 직렬화할 때 문제가 발생할 수 있음. (순환 참조 또는 불필요한 데이터 포함 등)
| 특징 | JsonUtility | Newtonsoft.Json (Json.NET) |
|---|---|---|
| 속도(성능) | 매우 빠름 (특히 모바일) | 상대적으로 느림 |
| 사용 편의성 | Unity 내장, 간단한 API | 패키지 설치 필요, 복잡한 API 가능 |
| 기능/유연성 | 제한적 (Public Field, 기본 타입) | 매우 강력 (Property, Dictionary, 다형성 등) |
| Unity 타입 | 기본 지원 (Vector3, Color 등) | 제한적, 별도 설정 필요 |
| 권장 사용처 | 간단한 설정, 작은 데이터, 성능이 중요한 경우 | 복잡한 데이터 구조, 세이브 시스템, 다양한 기능이 필요한 경우 |
| 저장 |
|---|
![]() |
| Test |
|---|
![]() |
| 불러오기 |
|---|
![]() |
| Test |
|---|
![]() |