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를 고민한다면 추천드린다.
★★☆☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
Unity) Notch Design(Safe Area) (20) | 2020.05.07 |
---|---|
Unity) UGUI RectTransform (사각 트랜스 폼) (10) | 2020.05.03 |
문제해결) Android 빌드 시 에러 UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors (3) | 2020.04.22 |
Unity)Unity Hierarchy 순서 변경 (14) | 2020.04.20 |
Unity) Rigidboy(Script)로 (Freeze)프리즈 처리하기 (0) | 2020.04.14 |
댓글