본문 바로가기
개발/Unity) Asset

Unity Package) Unity JSON Library

by 테샤르 2020. 4. 29.

Unity JSON  Library

 

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

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

impot 한다.

 

Asset->  Package로  설치가 가능하다.

Package Manager 에서 'com.unity.nuget.newtonsoft-json' 을 입력한다.

반응형

 

< 특징 > 

 

특징으로는 클래스를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를 고민한다면 추천드린다.

 

 

★★☆☆☆

 

반응형

댓글