Unity

Json이란? - NewTonSoft Json

MuscleDeveloper5683 2025. 3. 10. 17:18
728x90
SMALL

 

유니티에서 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 사용 - 다음 장에서 사용

 

 

728x90

'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