728x90
반응형
- 개요
데이터를 교환하기 위한 JSON 데이터 포맷을 유니티에서 어떻게 사용하는지 알아본다
1) JSON이란?
JSON은 데이터를 저장하고 전송하기 위한 경량 데이터 형식이다
Key-Value 쌍으로 데이터를 저장하여 읽고 쓰기 쉽고, 컴퓨터를 통한 파싱과 생성에도 용이하다
주로 데이터를 저장하거나 데이터를 송수신하는 용도로 사용하며 외부 프로그램과도 통신하는데 사용한다
2) JSON 문법 규칙

JSON 파일을 작성하기 위한 문법의 규칙은 위와 같다
3) JsonUtility - 유니티에서의 JSON 사용
private class PlayerData
{
public Vector3 position;
public int health;
}
기본적으로 사용할 데이터 클래스는 위와 같다
Vector3와 int로 구성된 데이터를 저장한다
3 - 1) 객체와 JSON 문자열간의 변환
private void Start()
{
PlayerData playerData = new PlayerData();
playerData.position = new Vector3(5, 0);
playerData.health = 100;
string jsonData = JsonUtility.ToJson(playerData, true);
Debug.Log(jsonData);
PlayerData loadedPlayerData = JsonUtility.FromJson<PlayerData>(jsonData);
Debug.Log("position : " + loadedPlayerData.position);
Debug.Log("health : " + loadedPlayerData.health);
}
Start 함수를 위와 같이 구성하였다
유니티에서 JSON 형식을 편하게 사용하기 위해 제공하는 JsonUtility 클래스를 사용하였다
- ToJson 함수 : Object 객체를 JSON 문자열로 변환 + True 인자를 사용하여 보기 편한 JSON 문자열을 사용
- FromJson<T> 함수 : JSON 문자열을 Object 객체로 변환

Start 함수의 실행 결과는 위와 같다
PlayerData 객체를 JSON 문자열로 변환하여 출력하고
변환된 JSON 문자열을 다시 PlayerData 객체로 복호화하여 출력하였다
3 - 2) JSON 파일 작업
private void Start()
{
PlayerData playerData = new PlayerData();
playerData.position = new Vector3(5, 0);
playerData.health = 100;
string jsonData = JsonUtility.ToJson(playerData, true);
Debug.Log(jsonData);
File.WriteAllText(Application.dataPath + "/saveFile.json", jsonData);
string jsonFileData = File.ReadAllText(Application.dataPath + "/saveFile.json");
PlayerData loadedPlayerData = JsonUtility.FromJson<PlayerData>(jsonFileData);
Debug.Log("position : " + loadedPlayerData.position);
Debug.Log("health : " + loadedPlayerData.health);
}
File 클래스의 함수를 사용하면 데이터를 외부 JSON 파일로 쓰고, 외부 JSON 파일을 읽어올 수 있다
- WriteAllText 함수 : Object 데이터를 외부 파일로 쓰기 위한 함수
- ReadAllText 함수 : 외부 파일을 읽어와 Object 데이터로 저장할 수 있는 함수

위와 같이 Object 데이터를 saveFile.json 파일로 저장한 것을 확인할 수 있다

또한 저장된 saveFile.json 파일을 읽어와 출력하고 있는 것을 확인할 수 있다
728x90
반응형
'유니티 엔진 > 유니티 엔진의 구성' 카테고리의 다른 글
| 유니티 엔진의 구성 - 42) Addressables를 사용한 원격 배포 (0) | 2026.05.13 |
|---|---|
| 유니티 엔진의 구성 - 41) Addressables (0) | 2026.05.12 |
| 유니티 엔진의 구성 - 39) NullReferenceException 예외 해결 (0) | 2026.04.28 |
| 유니티 엔진의 구성 - 38) 래그돌(Ragdoll) (0) | 2026.04.27 |
| 유니티 엔진의 구성 - 37) UI / Effects (0) | 2026.04.22 |