JSON 사용 가이드
이 문서는 GameMaker에서 JSON을 사용하여 데이터를 어떻게 처리하는지 설명합니다.
JSON이란 무엇인가?
JSON (JavaScript Object Notation)은 사람이 읽고 쓰기에 쉬운 데이터 교환 형식입니다. JSON의 기본 구조는 다음 두 가지로 구성됩니다:
- 객체 (Object): 이름/값 쌍의 컬렉션으로, 프로그래밍 언어에서는 '맵', '딕셔너리', 또는 '객체'라고 불립니다. GameMaker에서는
Struct또는DS Map로 표현됩니다. - 배열 (Array): 값의 정렬된 리스트로, 다른 프로그래밍 언어에서는 '리스트' 또는 '시퀀스'라고 함. GameMaker에서는
Array또는DS List로 표현됩니다.
JSON은 숫자 타입에 제한을 두지 않아 다양한 숫자 타입을 처리할 수 있습니다. 이로 인해 서로 다른 프로그래밍 언어 간의 데이터 교환을 용이하게 합니다. JSON의 숫자는 사람에게 익숙한 숫자 시퀀스만 존재합니다.
GameMaker의 JSON 지원
GameMaker는 JSON을 읽고 쓰기 위한 다양한 내장 함수들을 제공하고 있습니다: - json_parse와 json_stringify: JSON 문자열을 Struct와 Array로 변환하거나 그 반대로도 가능합니다. - json_encode와 json_decode: JSON 문자열을 DS Map와 DS List로 변환하고 그 반대도 가능합니다.
JSON을 작업할 때는 기본적으로 json_parse와 json_stringify를 사용하는 것이 좋습니다.
함수 사용 예
- 기본 구조체를 JSON으로 변환:
my_struct = {test: "this", val: ["that", "another thing", {"value": "a nested struct"}]};
struct_json = json_stringify(my_struct);
- JSON을 파일에 쓰기:
var _file = file_text_open_write("struct_as_json.json");
file_text_write_string(_file, struct_json);
file_text_close(_file);
JSON 데이터 변환
JSON은 제한된 몇 가지 값만 지원하며, 이러한 값들은 GameMaker의 다양한 데이터 타입으로 변환되어 저장됩니다.
| JSON 타입 | GameMaker 타입/값 | 비고 |
|---|---|---|
| true/false | true/false | |
| 숫자 (real/number) | Real, int64 | 유효 범위 내에서는 int로, 그렇지 않으면 double 혹은 문자열로 저장 |
| null | undefined | JSON null은 항상 undefined로 변환됩니다. |
| 문자열 | String | 특별한 문자열은 GameMaker 내부 값으로 변환됩니다. |
| 객체 | Struct (또는 DS Map) | |
| 배열 | Array (또는 DS List) |
JSON 읽기와 쓰기
JSON 문자열 쓰기
JSON을 쓸 때, 역시 json_stringify를 사용합니다. 변환 후 JSON 예시는 아래와 같습니다.
{"test":"this","val":["that","another thing",{"value":"a nested struct"}]}
JSON 문자열 읽기
JSON 문자열에서 데이터를 읽으려면 json_parse를 사용합니다.
my_struct = json_parse(struct_json);
JSON의 가독성 향상
JSON 문자열을 "예쁘게" 만들려면 json_stringify의 두 번째 인자로 true를 주면 됩니다.
struct_json = json_stringify(my_struct, true);
활용 예제
- 네트워크 전송: JSON 문자열을 네트워크를 통해 전송하여 서버와 클라이언트 간 데이터 동기화에 활용할 수 있습니다.
- 데이터 저장: JSON 포맷으로 게임 설정이나 사용자 데이터를 파일에 저장하여, 향후 로드할 수 있습니다.
- API 작업: 외부 API와의 데이터 교환을 위해 JSON 형식을 사용하면 좋습니다.
주의사항
- JSON 문자열 포맷에 따라 공백이나 따옴표 사용에 주의해야 합니다.
- 최대 중첩 제한은 128입니다.
- 데이터가 참조되는 경우 무한 루프를 방지하기 위해 주의가 필요합니다.
이제 JSON에 대한 기본 이해와 이를 GameMaker에서 활용하는 방법을 알아보았으므로, 이를 통해 다양한 데이터 처리 작업을 수행할 수 있을 것입니다.