{ 유니티 } 제이슨(Json) ?

열정적인 나무늘보 ㅣ 2025. 3. 17. 23:19

제이슨 ( Json )

 

제이슨(Json)이란 쉽게 말해, 물품을 택배로 보내기 위해서 택배 상자로 포장 후, 배송 되어 물품을 받듯이,

데이터(물품)을 Json(택배 상자)로 변환해, Json을 다시 원래의 코드로((Json)택배 -> 조립도 -> 클래스(코드)) 바꾸어 주는 형태이다. 

 

Json으로 변환 시에 외부 침입 시에도 쉽게 접근이 불가하기 때문에 보안에 용이하다.

 

우선, Json 을 활용하려면, Json으로 변환할 데이터가 필요하다.

 

예)

class Data
{
    public string nickname;
    public int level;
    public int coin = 100;
    public bool skill;
}

 

이 데이터를 Json으로 변환하려면, 유니티에서 제공하는 'JsonUtility' 클래스의 'ToJson(변환할데이터)' 메소드를 사용해주면 된다.

 

public class JsonManager : MonoBehaviour
{
    Data player = new Data() 
    { 
        nickname = "오늘코딩", 
        level = 50, 
        coin = 200, 
        skill = false
    };

    void Start()
    {
        // #. Json으로 변환
        string jsonData = JsonUtility.ToJson(player);
    }
}

 

이렇게 Data 클래스에 있는 데이터를 포장(택배포장) 시켰다.

하지만, 이 상태라면 포장만 시켜놓고 데이터를 쓸 수도 없는 상황이다.

이 데이터(물품)을 꺼낼 수 있는 방법은 'FromJson<타입>(꺼낼데이터)' 메소드이다.

 

void Start()
{
    // #. Json으로 변환
    string jsonData = JsonUtility.ToJson(player);

    // #. Json 데이터를 다시 변환
    Data player2 = JsonUtility.FromJson<Data>(jsonData);
    print(player2.nickname);
    print(player2.level);
    print(player2.coin);
    print(player2.skill);
}

 

이렇게 하면 print문으로 출력했을 때, 다시 데이터가 출력되는 것을 볼 수 있다.

 

추가적으로 기존 객체에 Json 데이터를 역직렬화하여 기존 데이터를 덮어쓸 수도 있다.

JsonUtility.FromJsonOverwrite(jsonData, player2);

 

'참고할 만한 내용' 카테고리의 다른 글

{ 유니티 } 오브젝트 풀링 (ObjectPool)  (0) 2025.02.10
발사체 공식  (0) 2024.02.29
Sprite Settings  (0) 2024.01.25
Coroutine()  (0) 2024.01.11
모바일 게임 해상도(가로)  (0) 2024.01.11