- 여담 및 유니티에서의 JSON
- SpreadDB
- Parsing
사실 게임 개발에서(클라이언트면 더더욱) JSON을 직접적으로 작성할 일은 없다고 생각했습니다. 서버관리를 한다고 쳐도 Firebase를 활용하면 편리하다보니까요. 그러나 프로젝트에서 게임 기획자가 각종 게임에 대한 정보를(예를들어 캐릭터 스텟, 아이템 수치 등 매우 많은 것이 될 수 있겠습니다.) XML,JSON,YAML,CSV 등으로 작성해서 개발자에게 넘겨주게 될텐데, 이를 직접 작성도 해보면서 수정/업데이트 사항이라고 가정하고 이를 다시 받아서 처리해보는게 큰 숲(?)을 보는데 도움이 될 것 같아서 여러 관련 내용을 알아보고 포스팅합니다.여담과 함께 SpreadDB를 활용하여 JSON 으로 파싱 및 받아오는 내용을 순차적으로 알아 보겠습니다.
여담을 잠깐하자면, 위는 데이터 직렬화 형식 (혹은 데이터 교환 형식) 사용 추이입니다. 해가 갈수록 자바스크립트에서 출발한 JSON이 상당히 많이 쓰이고 있고 이젠 거의 업계 표준이 되었습니다. YAML도 차트에 있는데 유니티에서 내부 데이터 저장이나 복구 등을 위해서 사용하지요. SCENE이나 PREFAB을 뜯어본 경험이 있는 사람은 아마 YAML 파일을 보셨을겁니다.
반면에 JSON은 웹 상에서 데이터를 교환할 때 주로 사용되는 텍스트 기반 데이터 포맷입니다. Unity에서도 JSONUtility를 기본적으로 제공하여 손쉽게 사용할 수 있게 되있습니다. 쓰고 읽고, 또한 저장하는 것도 매우 쉽고 아래 사진처럼 매우 빠르기 때문에 시리얼라이즈 할때 확실히 유용하다고 할 수 있겠습니다. 참고로 newtonsoft 사용 용도면에서 다른 면이 있으니 써드파티인 newtonsoft JSON 보다 JSONUtil이 항상 제일 유용하다고는 할 수 없으니 주의해야겠습니다. (간단하게 말하면 , newtonsoft Json이 조금 더 복잡한 작업을 하거나, LINQ쿼리로 조작하는 경우에 용이할 수 있습니다)
참고로 이 방식 이전에 구글 스프레드 시트에서 직접적으로 퍼블리시 하여 JSON을 읽어오는 방식이 있었습니다. 근데 버전 업그레이드 및 보안이슈로 SheetDB를 활용하는 방식으로 많이 활용되고 있습니다.(이전 방식으로 하는게 아마 지원이 안되는 걸로 알고 있습니다.) 이외에도 postma이나 json.net, jq, JSONLint, JsonPath-Plus등을 이용해서 JSON데이터를 다룰 수도 있지만 각각 본래 툴의 활용면에서 많이 다른 부분이 있습니다.
https://sheetdb.io/
위 사이트에 접속해서 오른쪽에 있는 Creat new API를 만들어줍니다.
이름을 지정하고 만들게 되면 왼쪽에는 API endpoint Url, 그리고 오른쪽은 Google spreadsheet url이 나오게됩니다.
각각 JSON 포맷과, 구글스프레드 시트 형식으로 나오게 됩니다. 다만 JSON에서 한글의 경우 유니코드로 표시되니 저장 및 전송 시스템이 모두 UTF-8같은 유니코드 지원 인코딩 방식인지 체크를 해야합니다.
출처: 유니티 코리아 : 역직렬화에 대하여
Create Google Spreadsheet and API from JSON data
정보 감사합니다.