Programing/Unity(C#)

[C#] json 데이터 파싱하기

hye3193 2024. 4. 9. 19:21
{
    "life": "4",
    "hp": "100",
    "damage": "7",
    "moveSpeed": "5"
}

우선 json 파일을 준비해 준다

json에서 { } 괄호는 오브젝트고, [ ] 괄호는 배열이라고 생각하면 된다

 

[Serializable]
public class PlayerData
{
    public int life;
    public int hp;
    public int damage;
    public float moveSpeed;
}

데이터 틀을 만들어 준다

직렬화를 위해 반드시 위에 [Serializable]을 붙여주어야 한다(using System)

이때 각 변수들의 이름은 json 데이터에서의 각 항목들의 이름과 일치해야 한다

 

public class DataManager
{
    public PlayerData Player { get; private set; }
    public void Init()
    {
        Player = LoadSingleJson<PlayerData>("PlayerStatData");
    }

    Item LoadSingleJson<Item>(string path)
    {
        TextAsset textAsset = Managers.Resource.Load<TextAsset>($"Data/{path}");
        return JsonUtility.FromJson<Item>(textAsset.text);
    }
}

json 데이터를 파싱하는 Data Manager 클래스를 만들어서 작업하였다

단일 오브젝트를 갖고 있는 json 타입이기 때문에 아까 만들었던 PlayerData 클래스 형태의 변수를 하나 만들어 준다

우선 textAsset을 로드해 준 다음, JsonUtility의 FromJson을 이용해 파싱해 준다

* FromJson<틀>(텍스트) 를 이용하면 인자로 넘겨진 텍스트를 지정한 틀에 맞게끔 알아서 파싱해 준다

 

이후 DataManager에 접근하여 Player의 각 항목들에 접근할 수 있다