json_encode 함수 설명 및 활용 예제
개요
json_encode
함수는 기존의 DS 맵을 JSON 문자열로 인코딩합니다. 이 JSON 문자열은 HTTP POST 요청의 일부로 사용되거나 파일에 저장되어 외부에 데이터를 저장하는 데 활용될 수 있습니다. 이 함수는 여전히 DS 맵에 대해 유효하지만, json_stringify
와 structs
함수로 대체되었으므로 레거시 지원을 위해서만 사용하는 것이 좋습니다.
DS 맵은 다음과 같은 내용을 포함할 수 있습니다: - 중첩된 DS 맵 및 DS 리스트 (각각 ds_map_add_map
, ds_map_add_list
, ds_list_mark_as_map
, ds_list_mark_as_list
함수를 사용하여 올바르게 표시해야 함) - 중첩된 구조체 및 배열은 각각 중첩된 JSON 객체 및 배열로 작성됩니다.
사용법
문법
json_encode(map, [prettify])
매개변수
매개변수 | 타입 | 설명 |
---|---|---|
map | DS Map | 인코딩할 정보가 포함된 DS 맵 |
prettify | Boolean | 출력 형식을 보기 좋게 만들지 여부 (들여쓰기 및 줄 바꿈 추가) |
반환값
- String: 인코딩된 JSON 문자열
예제
예제 1: 기본 사용법
var _hiscore_map, _json;
_hiscore_map = ds_map_create();
for (var i = 0; i < 10; i++) {
ds_map_add(_hiscore_map, name[i], score[i]);
}
_json = json_encode(_hiscore_map);
ds_map_destroy(_hiscore_map);
post_request_id = http_post_string($"http://www.angusgames.com/game?game_id={global.game_id}", _json);
위 코드는 DS 맵을 생성하고 name
과 score
배열을 반복하여 각 키/값 쌍을 새로운 맵에 추가합니다. 그런 다음 이 맵을 json_encode
를 사용하여 인코딩하고, 문자열로 저장한 후 웹 서버에 전송합니다. 마지막으로 DS 맵을 파괴하여 메모리 누수를 방지합니다.
예제 2: 혼합 데이터 유형의 계층 구조
var _map = ds_map_create();
var _list = ds_list_create();
ds_map_add_list(_map, "seasoning", _list);
ds_list_add(_list, "pepper", "salt", "thyme");
_map[? "greeting"] = {parts: ["Hello", "World!"], separator: ", "};
_map[? "food"] = ["bread", "coconut", "mango"];
var _json = json_encode(_map, true);
// ds_map_destroy(_map);
show_debug_message(_json);
위 코드 예제는 혼합된 내용을 가진 DS 맵을 JSON으로 인코딩하는 방법을 보여줍니다. 먼저 DS 맵과 DS 리스트를 생성하고 임시 변수에 저장합니다. 그런 다음 DS 리스트를 DS 맵에 추가하고 몇 가지 항목을 추가합니다. 이후 두 개의 다른 키를 맵에 추가하고, 하나는 구조체로, 다른 하나는 배열로 값을 할당합니다. 마지막으로, JSON 문자열을 디버그 메시지로 표시합니다.
활용 예제
예제 3: 사용자 정보 저장
var user_info = ds_map_create();
user_info[? "username"] = "player1";
user_info[? "score"] = 1500;
user_info[? "level"] = 5;
var user_json = json_encode(user_info);
ds_map_destroy(user_info);
예제 4: 게임 설정 저장
var settings = ds_map_create();
settings[? "volume"] = 80;
settings[? "fullscreen"] = true;
var settings_json = json_encode(settings, true);
ds_map_destroy(settings);
예제 5: 복잡한 데이터 구조
var game_data = ds_map_create();
var player_list = ds_list_create();
ds_map_add_list(game_data, "players", player_list);
ds_list_add(player_list, "player1");
ds_list_add(player_list, "player2");
game_data[? "game_state"] = "running";
var game_json = json_encode(game_data);
ds_map_destroy(game_data);
이와 같이 json_encode
함수를 사용하여 다양한 데이터 구조를 JSON 형식으로 변환하고, 이를 외부 시스템과의 데이터 전송에 활용할 수 있습니다.