뒤끝서버 데이터(테이블,차트) 파싱은 어떻게 하고 계신가요?

차트 데이터가 타입무시하고 모두 스트링으로 저장되는거 보고
테이블데이터도 전부 스트링으로 변환해서 저장한다음 리플렉션 이용해서 파싱하는데 다들 어떤식으로 사용하고 계신지 궁금합니다.

우선 제가 사용하는 방식 적어봅니다.
전 이렇게 사용하니 클라단에서 데이터 클래스만 잘 만들면 그에 맞춰서 파싱할 수 있어서 크게 불편함은 없던데
더 좋은 방법이 있으면 의견 주세요.

[System.Serializable]
public class SampleData
{
    public int item_id;
    public string name;
    public int grade;
}

private T ParseBackendData<T>(JsonData json) where T : new()
{
    T data = new T();
    var fields = typeof(T).GetFields();
    for (int i = 0; i < fields.Length; ++i)
    {
        if (fields[i].FieldType == typeof(int))
        {
            if (json.Keys.Contains(fields[i].Name))
                fields[i].SetValue(data, int.Parse(json[fields[i].Name]["S"].ToString()));
            else
                fields[i].SetValue(data, 0);
        }
        else if (fields[i].FieldType == typeof(string))
        {
            if (json.Keys.Contains(fields[i].Name))
                fields[i].SetValue(data, json[fields[i].Name]["S"].ToString());
            else
                fields[i].SetValue(data, "");
        }
        else if (fields[i].FieldType == typeof(float))
        {
            if (json.Keys.Contains(fields[i].Name))
                fields[i].SetValue(data, float.Parse(json[fields[i].Name]["S"].ToString()));
            else
                fields[i].SetValue(data, 0.0f);
        }
        else if (fields[i].FieldType == typeof(bool))
        {
            if (json.Keys.Contains(fields[i].Name))
                fields[i].SetValue(data, bool.Parse(json[fields[i].Name]["S"].ToString()));
            else
                fields[i].SetValue(data, false);
        }
        else if (fields[i].FieldType == typeof(DateTime))
        {
            if (json.Keys.Contains(fields[i].Name))
            {
                string time = json[fields[i].Name]["S"].ToString();
                fields[i].SetValue(data, DateTime.Parse(time));
            }
            else
                fields[i].SetValue(data, new DateTime(0));
        }
        else
            Debug.LogError("Wrong field type");
    }
    return data;
}

SampleData data = ParseBackendData<SampleData>(json["rows"][0]);
좋아요 1

잘쓸게요 감사합니다.