유니티에서 JSON이란?
JSON(JavaScript Object Notation)은 데이터를 쉽게 저장하고 전송할 수 있도록 설계된 경량 데이터 형식이다.
쉽게 말하면 서버와 클라이언트 사이에 데이터를 주고받을지에 대한 방법이다.
유니티에서는 객체 데이터를 JSON 형식으로 변환하여 파일로 저장하거나, 네트워크 통신 시 데이터를 주고받는 데 사용할 수 있다.
JSON은 { "key": value } 형태의 키-값 쌍으로 이루어져 있으며, 리스트나 중첩된 객체 구조도 표현할 수 있다.
비슷한 예
XML - Json에 비해 가독성이 떨어지고 데이터를 넣거나 꺼내기 위해 파싱하는 과정이 까다롭다.
SCV - 표 형식의 데이터 형식이라 편하지만, 고차원(표안에 표를 넣는 형식)에선 불편하다.
JSON의 특징
- 가볍고 직관적: XML보다 간결하고 사람이 읽기 쉬운 형태
- 키-값 기반: 딕셔너리 형태로 데이터 구조 표현
- 객체 직렬화(Serialization) 가능: C# 객체를 JSON 문자열로 변환하여 저장하거나 전송 가능
- 역직렬화(Deserialization) 가능: JSON 문자열을 다시 C# 객체로 변환 가능
Json 데이터 형식 예시
Json은 정수, 실수, 문자열, bool, null 의 데이터 타입을 지원한다.
{ } - 오브젝트 - ex) {"이름(key)" : "이름(value)" , "나이(Key)" : "나이(Value)"}
[ ] - 배열 - ex) ["이름", "나이", "성별"]
{
"id": "wergia",
"level":10,
"ехр": 33.3,
"hp": 400,
"items":
[
"Sword",
"Armor",
"Hp Potion",
"Hp Potion",
"Hp Potion"
]
}
Json 사용방법
1. NewTonSoft 외부 라이브러리 사용하기
2. 유니티에서 지원하는 JsonUtilty 사용하기
✅ Newtonsoft.Json (Json.NET)
- 가장 강력한 JSON 라이브러리 중 하나로, 객체 직렬화/역직렬화 기능이 매우 유연함.
- Dictionary, List, HashSet 같은 다양한 컬렉션 지원.
- 속성(attribute) 기반의 세밀한 직렬화 설정 가능 ([JsonProperty], [JsonIgnore] 등).
- JSON 포맷이 복잡한 경우 (중첩 구조, 키/값 형태의 데이터) 처리 가능.
- JSON을 JObject 형태로 동적으로 파싱 가능.
- 성능은 JsonUtility보다 상대적으로 느릴 수 있음.
1. NewTonSoft 라이브러리 설정
NewTonSoft Json 검색후 -> Json.NET 클릭 -> NewTonSoft Git 이동 -> 압축파일 다운로드
![]() |
![]() |
해당 Json파일에서 바이너리 파일 -> net 4.5버전 -> dll파일을 사용할 프로젝트 안에 옮겨주기
![]() |
![]() |
Unity 2021.2 이후 버전에서는 .NET Standard 2.1과 .NET Framework 중 하나를 선택할 수 있다.
하지만 Newtonsoft.Json 4.5 버전은 .NET Framework 4.5용 DLL이므로, .NET Standard 2.1과 호환되지 않을 수 있다.
project setting 단계에서 configuration -> Api compatibility level -> .NET framework 설정
1.2 Json스크립트 생성
네임스페이스 선언
Json으로 변환할 클래스 생성
![]() |
![]() |
![]() |
1.3 오브젝트를 Json 데이터로 변환
결과 - 문자열로 바뀜
1.4 Json 데이터를 오브젝트로 변환
결과 - Json 문자열이 다시 오브젝트로 바뀜
JSON의 주의점
- 작은 문법오류에도 민감하게 반응한다.
- 중간에 중괄호, 콜론, 쉼표 등 하나라도 빠지면 Json 파일이 깨져버리고 문자열 형태인 Json 데이터를 원하는 데이터로 변환할 수 없다.
- 이러한 문제를 해결하기 위해 Json 검사기를 사용해서 검사후 사용하자!!
⚠️⚠️ NewtonSoft는 모노비헤이비어를 상속받는 오브젝트를 Json Data로 직렬화 할 수 없다. ⚠️⚠️
모노를 상속받는 클래스를 Json 데이터로 변환해보기
실행 시 에러가 발생한다.
Newtonsoft.Json.JsonConvert.SerializeObject() 메서드를 사용할 때 발생하는 걸 보면,
GameObject나 GameObject를 포함한 클래스를 JSON으로 변환하려고 할 때 문제가 생긴다.
해결방법
1. MonoBehaviour를 상속받지 않은 클래스로 변경
2. MonoBehaviour를 직렬화할 때 특정 필드만 변환
3. JsonUtility 사용 - 다음 장에서 사용
'Unity' 카테고리의 다른 글
[Unity] - Text Mesh Pro (다국어화) (0) | 2025.03.25 |
---|---|
Json이란? - Unity JsonUtility (0) | 2025.03.12 |
[Unity] - PlayerPrefs란? (0) | 2025.03.04 |
[UI] - Cnavas Render Mode (0) | 2025.02.04 |
[Unity] - Text Mesh Pro (0) | 2024.07.20 |