[내일배움캠프 TIL] Json으로 클래스의 데이터를 파싱할 때...

KYJ의 Tech Velog·2023년 11월 20일
0

TIL

목록 보기
63/71
post-thumbnail

Today I Learned

저장하기 & 불러오기 기능이 완성되면 자세한 이야기를 해볼 예정이지만 오늘 알게 된 사실은 남겨놓고자 합니다.

특정 클래스의 데이터를 Json으로 파싱하여 저장하고자 할 때, 자동구현 프로퍼티로 만든 EquipID는 Json에 담기지 않았습니다.

[System.Serializable]
public class Character
{
    public int characterID;
    public Enums.CharacterType characterType;
    public int slotIndex;
    public bool isFormat;
    
    public int[] EquipID { get; private set; } = new int[6] { -1, -1, -1, -1, -1, -1 };
    
    ...
    
}

원래 public인 필드들은 따로 직렬화를 해주지 않아도 Json에 잘 담겨야 하는데 자동구현 프로퍼티는 담기지 않았습니다.

[System.Serializable]
public class Character
{
    public int characterID;
    public Enums.CharacterType characterType;
    public int slotIndex;
    public bool isFormat;
    [SerializeField] private int[] equipID = new int[6] { -1, -1, -1, -1, -1, -1 };
    public int[] EquipID
    {
        get
        {
            return equipID;
        }
    }
    
    ...
}

다음과 같이 만들어줘야 equipId 필드를 따로 선언해주어야 json에 저장되는 것이 확인되었습니다.

일단은 JsonUtility로만 구현을 한 것이라 다른 방법이 있는지는 확인이 되진 않았지만 가장 간단하게 만든 방법(JsonUtility.ToJson() 사용)으로는 자동 구현 프로퍼티는 json으로 파싱되지 않는 것을 확인하였습니다.

Tomorrow's Goal

  • 최종 프로젝트
  • 면접 질문 제출

0개의 댓글