티스토리 뷰
금일, Json파일으로 데이터를 변환하는 방식에 대한 강의를 들었다.
그 강의를 보고 나서, 개인적인 호기심이 들어서 더욱 공부해 보았다.
다만, 이게 엑셀과 관계된 것이다 보니, 글 하나로 정리하지는 못할 거 같다.
그러니, 2개의 글으로 정리해 보려고 한다.
유니티 인스펙터는 다양한 기물의 데이터를 에디터 상으로 변경할 수 있는 아주 유용한 기능이다.
하지만, 기본적으로 '인스턴스 별로 별개 구성'이라는 점과, 일단은 에디터를 건드려야 한다는 점 때문에 실제로 이를 통해서 데이터를 편집하는 것은 다소 껄끄러운 것이 사실이다.
이를 대처하기 위한 기술 중 하나가 '엑셀 연동'으로, 엑셀 문서로 편집된 데이터를 불러들이는 기능이다.
다만, 실제로 엑셀파일을 읽어들이기에는 다소 수고가 많이 든다.
그렇기 때문에 사용하는 다양한 포맷이 존재하며, 실제로 Json과 CSV, XML이 자주 쓰인다.
이에 대해서는 이전에 다룬 적 있으니, 간단하게 언급만 하고 넘어가겠다.
[TIL - Day 15 [JSON, CSV, XML (URL: https://lsu0503.tistory.com/65) ]
Today I Learned - Day 15 [JSON, CSV, XML]
json과 csv, xml은 모두 데이터를 저장하기 위해 사용하는 데이터 포맷이다.사실 그냥 개발자가 데이터의 구성요소를 구분할 수 있도록 특정한 규칙을 따라서 저장한다면 txt로 저장한다고 해도 충
lsu0503.tistory.com
그렇다면 실제로 연동을 하기 위해서는 어떻게 하는 가를 알아보자... 라고 하기 전에.
C# 자체에서 json파일을 연동할 수 있는 함수를 제공한다.
다만, 엑셀에서 Json으로 저장하는 기능을 지원하지 않는다.
그러니 오늘은 C#에서 지원하는 Json 연동 패키지에 대해서 알아보고, 내일은 Excel을 Json으로 저장시키는 방법에 대해서 알아보자.
[사실, 6일차에 정리한 적 있는 정보다. 2번을 올리기 위해서, 더 알기 쉽게 정리해 보자.]
시작하기에 앞서, C#에서 Json 지원 함수를 사용하기 위해서는 System.Text.Json 패키지를 다운받아야 한다.
[.NET Core 3.0은 기본으로 지원된다고 한다. 본인은 확인 못해봤다.]
System.Text.Json 패키지를 다운 받았다면, 이제 Json 파일으로 변환하거나 변환 받을 준비를 해야한다.
Json 파일 변환용 구조체 형성하기
Json 파일 입출력은 기본적으로 string 변수를 지원한다. int 변수도 가능하다고는 하나 안정적이지는 않다.
때문에 저장할 값을 모두 string 값을 변환하고, 반대로 읽어들인 내용을 각 변수형으로 변환할 구조체를 형성해야 한다.
이후의 내용은 이 구조체를 형성했다고 가정하고 작성한다.
출력용 함수: JsonSerializer.Serialize();
더 정확하게는, Json 형식으로 변환된 string 변수를 형성하는 함수다.
저장할 구조체가 structToSave이고, json으로 저장할 string 변수가 jsonStringToSave라고 한다면
string jsonStringToSave = JsonSerializer.Serialize(structToSave)
이런 방식으로 사용할 수 있다.
이후, 이 jsonStringToSave 변수를 아래 코드로 파일으로 저장하면 된다.
File.WriteAllText(DirectoryIncludingFileName, jsonStringToSave)
[여기서 DirectoryIncludingFileName은 파일명을 포함한 주소 이름이다. 확장자가 .json임에 주의하자.]
이렇게 구성하면 지정된 디렉토리에 저장 파일이 생성된다.
입력용 함수: JsonSerializer.Deserialize();
역시나 string 변수를 json에서 구조체로 변환시켜주는 함수다.
그렇기 때문에 상술한 저장 부분의 역순으로 진행해 주면 된다.
먼저, 파일을 읽어들이는 함수다.
string readString = File.ReadAllText(DirectoryIncludingFileName)
상술했듯이, DirectoryIncludingFileName은 파일명을 포함한 주소 이름이며, readString이 읽어들인 json파일을 string으로 변환하여 저장해두는 함수다.
그리고 이것을 이용해서 다음 함수를 실행하면 다시금 구조체로 변환된다.
structValue = JsonSerializer.Deserialize<structType>(ReadString)
여기서 structType이 json에서 변환받을 구조체의 타입이며, structValue가 해당 구조체 변수다.
이 함수를 실행하면 structValue에 json에서 변환된 구조체가 저장된다.
이 구조체를 다시금 각 자료형에 맞춰서 변환, 저장하면 파일 읽기가 완료된다.
여담으로, CSV파일은 전체적으로 간단하고 확인하기 쉬운 형태라서 자주 쓰는 것은 맞지만, 구조적인 결함이 있어서 대화 같은 요소를 저장할 때에는 json이 더 잘 쓰인다고 한다.
[CSV파일은 기본적으로 ,(쉼표)를 이용해서 구분하기에 문자열에 ,(쉼표)가 포함되어 있다면 버그가 발생한다.]
그런 점도 있으니, 다음에는 엑셀에서 Json을 저장하는 방법을 알아보자.
물론, 아마도 엑셀 매크로에 관련된 내용이라 다소 알아보긴 힘들겠지만...
'스파르타 내일배움캠프 > Today I Learned' 카테고리의 다른 글
Today I Learned - Day 36 [3D 모드에서 타일셋 사용하기] (0) | 2024.11.04 |
---|---|
Today I Learned - Day 35 [엑셀 연동 ~ Json - 2] (0) | 2024.11.01 |
Today I Learned - Day 33 [Readme에 대하여] (0) | 2024.10.30 |
Today I Learned - Day 32 [Rigidbody - Dynamic/Kinematic/Static] (0) | 2024.10.29 |
Today I Learned - Day 31 [움직이는 플랫폼과 유닛의 동시이동] (0) | 2024.10.28 |