본문 바로가기
개발/Unity

Unity) Unity JSON Library

by 테샤르 2020. 4. 29.

Unity JSON  Library

 

유니티에서 JSON을 사용할 때 편리한 라이브러리를 소개하려고 한다.

Unity Asset 스토어에서 JSON.Net을 검색하면 다음과 같이 나오는데 

impot 한다.

특징으로는 클래스를SerializeObject 와 DeserializeObject 가 가능하다는 장점이 있다.

그냥 string 을 읽어서 파싱을 하지 않아도 된다. 데이터 클래스로 바로 변환하면 된다.

데이터를 InfoSkinUnit 클래스로 바로 변환하는 과정이다.

변환할 JSON 데이터는 다음과 같다.

 

 

InfoSkinUnit의 클래스는 다음과 같다.

     JObject loaddata = JObject.Parse(_loadstring);
        JObject levelJObject = (JObject)loaddata["data_skin"];

        for (int i = 0; i < levelJObject.Count; i++)
        {
            JObject item = (JObject)levelJObject[i.ToString()];
            if (null == item)
            {
                continue;
            }

            var jsonString = JsonConvert.SerializeObject(item, Formatting.None);
            InfoSkinUnit info = JsonConvert.DeserializeObject<InfoSkinUnit>(jsonString);
            info.index = i;
            this.m_DicSkinInfo.Add(i, info);
        }
    private void SaveSkinPiece()
    {
        JObject savedata = new JObject();
        JArray arraydata = new JArray();
        
        string jsonInfoData = "";
        for (int i = 0; i < this.m_UserSkinPieceInfoList.Count; i++)
        {
            arraydata.Add( JToken.FromObject(this.m_UserSkinPieceInfoList[i]));
        }
        savedata["data_skin"]= arraydata;

        jsonInfoData = JsonConvert.SerializeObject(savedata, Formatting.Indented);
        Logger.LogFormat("[UserInfoManager] SaveSkinPiece : {0}",jsonInfoData);

        PlayerPrefs.SetString(Define.USER_UNIT_PIECE_LIST, jsonInfoData);

    }

JSON이 클래스로 변환이 바로 되니 코드도 간결하고 복잡하지 않다.

예전에는 JSON 파서 클래스를 따로 두고 데이터를 읽어서 Object와 Array를 구분했었는데 그에 비하면 정말 편하다.

혹시 Unity에서 JSON Parser를 고민한다면 추천드린다.

 

반응형

댓글