모듈:JSON/설명문서: 두 판 사이의 차이
imported>재미로봇 잔글 (Regurus님 요청 (2)) |
imported>재미로봇 잔글 (change "백괴게임:" to "리버티게임:") |
||
67번째 줄: | 67번째 줄: | ||
=== 새로 만들기 === | === 새로 만들기 === | ||
<nowiki>{{</nowiki>[[ | <nowiki>{{</nowiki>[[리버티게임:게임 만들기#.23switch|#switch]]:<nowiki>}}</nowiki>문법과 비슷하게 JSON 데이터를 새로 만들 수 있습니다. | ||
<pre>{{#invoke:JSON|new|(값1)|(변수a)=(값a)|...}}</pre> | <pre>{{#invoke:JSON|new|(값1)|(변수a)=(값a)|...}}</pre> |
2020년 9월 9일 (수) 22:22 판
JSON 데이터를 읽어들여 값을 반환하거나, 데이터를 수정합니다.
주의사항
이 모듈은 null
을 없는 값으로 간주합니다. 따라서 null 값을 보존하려면 이 모듈을 사용하지 말것을 권장합니다.
사용전:
{"var1": true, "var2": null, "var3": false}
사용후:
{"var1": true, "var3": false}
루아에서는 배열의 순서가 1부터 시작합니다. 이 점 유의해 주세요.
["aaa", "bbb", "ccc", "ddd"]
JS | 값 | Lua |
---|---|---|
0 | aaa | 1 |
1 | bbb | 2 |
2 | ccc | 3 |
3 | ddd | 4 |
객체의 경우 속성이 표시되는 순서가 바뀔 수 있습니다. 단, 배열은 해당되지 않으며 객체의 순서가 바뀌어도 속성명은 변하지 않으므로 변수를 호출할 때에 큰 문제는 없습니다.
사용전:
{"var1": "aaaa", "var2": 1234, "var3": true}
[1, 3, 5, 9]
사용후:
{"var2":1234,"var3":true,"var1":"aaaa"}
[1,3,5,9]
사용법
변수
객체를 사용한다면 속성명을 그대로 입력하시면 됩니다.
JSON에서는 문자열, 숫자, 부울, 배열, 객체, null을 다루며, 이 틀에서 값을 입력할 때 기본적으로는 문자열으로 처리되지만, 각각의 형식에 맞춰서 입력한다면 자동으로 타입이 적용됩니다. 만약 강제적으로 문자열을 적용하고 싶다면 ""
로 이스케이프하실 수 있습니다. 만약, 이스케이프된 문자열을 ""로 묶고 싶으시다면 그 안에
""를 더 넣으실 수 있습니다. (예시: "true"
→true
, ""123""
→"123"
)
칸을 비우시면 없는 값으로 간주되어 내용이 삭제됩니다. 만약, 빈 문자열을 사용하고 싶으시다면 ""
을 입력하세요. 칸을 비우기 곤란하시다면 null
을 사용하여 내용을 지우실 수 있습니다. null 역시 마찬가지로 "null"
과 같이 이스케이프가 가능합니다.
JSON 코드
JSON 코드는 다음과 같은 다양한 상황에서 입력이 가능합니다. 아래와 같은 내용을 두번째 변수(JSON 코드)에 입력해 주세요.
- JSON 코드 직접 입력
- JSON 코드가 반환되는 이 모듈도 사용하실 수 있습니다.
- JSON 문서 불러오기
- JSON 문서를 불러와서 입력하시려면 다음과 같이 틀의 형태로 입력해 주세요.
{{사용자:홍길동/데이터.json}} {{:한게임/DB}}
- 빈 JSON 코드
- 비어있는 JSON 코드를 사용하시려면
{}
나[]
만 입력해 주세요.
새로 만들기
{{#switch:}}문법과 비슷하게 JSON 데이터를 새로 만들 수 있습니다.
{{#invoke:JSON|new|(값1)|(변수a)=(값a)|...}}
변수를 지정하지 않은 경우 변수는 틀과 같이 순서로 지정이 되며, 배열을 만들고자 할 경우 변수 없이 값만 입력하시면 됩니다.
이 기능은 앞서 말했다시피 #switch 문법과 유사하기 때문에 호환이 될 수 있습니다. 앞부분의 {{#switch:{{{1}}}
부분을 한번 {{풀기:#invoke:JSON|new
로 변경해 보세요. switch가 JSON으로 마법같이 변신할겁니다.
{{#switch:{{{1}}} |var1=aaaa |var2=1234 |var3=true }}
{{풀기:#invoke:JSON|new |var1=aaaa |var2=1234 |var3=true }}
{
"var2": 1234,
"var3": true,
"var1": "aaaa"
}
어때요, 신기하지 않나요? 이 기능과 함께 switch에서 JSON으로 갈아타세요!
변수값 얻기
JSON 데이터에 있는 변수의 값을 얻으려면 다음과 같이 입력합니다:
{{#invoke:JSON|get|(JSON 코드)|(변수)}}
위와 같이 입력하시면 해당 변수의 값만 그대로 나오며, 값이 없는 경우 기본값이 나옵니다.
예를 들어, var
변수의 값을 얻는다면 이렇게 입력하세요:
{{#invoke:JSON|get|(JSON 코드)|var}}
{{JSON}}을 이용하면 더 간단히 입력하실 수 있습니다. 자세한 내용은 해당 문서를 확인해 주세요.
변수값 변경
JSON 데이터에 있는 변수의 값을 변경하려면 다음과 같이 입력합니다:
{{#invoke:JSON|set|(JSON 코드)|(변수)|(값)}}
위와 같이 입력하시면 해당 변수의 값이 변경된 JSON 코드가 반환됩니다.
예를 들어, var
변수의 값을 4
로 변경할 경우 이렇게 입력하세요:
{{#invoke:JSON|set|(JSON 코드)|var|4}}
- 변수 추가
- JSON 데이터에 있는 변수를 추가하려면 변수값을 변경할 때와 같이 입력하시면 됩니다.
- 변수 제거
- JSON 데이터에 있는 변수를 제거하려면 다음과 같이 변수값을 변경할 때의 값을 비워두거나
null
을 입력하시면 됩니다. {{#invoke:JSON|set|(JSON 코드)|(변수)}}
- 위와 같이 입력하시면 입력한 JSON 코드에서 해당 변수가 제거된 값이 나옵니다.
- 예를 들어,
var
변수를 제거하려면 이렇게 입력하세요: {{#invoke:JSON|set|(JSON 코드)|var}}
코드 합치기
두 JSON 코드를 합칩니다. new랑 궁합이 매우 좋습니다.
{{#invoke:JSON|mer|(JSON 코드1)|(JSON 코드2)|...}}
만약 중복된 항목이 있으면 2번 코드의 값으로 설정됩니다.
이를 응용하여 내용 수정에도 사용하실 수 있습니다. 만약 var1
의 값을 4
로 바꾸고 var2
의 값을 false
로 바꾸려는 경우 다음과 같이 입력해 주세요. 다만 new는 값을 제거하는 데에는 이용하실 수 없으며 JSON 코드를 직접 입력하셔야 합니다.
{{#invoke:JSON|mer|(JSON 코드)|{{#invoke:JSON|new|var1=4|var2=false}}}}
변수 제거
여러개의 변수를 일괄적으로 제거합니다.
{{#invoke:JSON|del|(JSON 코드)|(변수1)|(변수2)|...}}
작업 조합
만약 여러 작업을 동시에 하고 싶다면 cmd명령을 사용해 CGI2 방식으로 명령어를 입력하거나, 모듈:JSON/cmd를 사용하실 수 있습니다.
{{#invoke:JSON|cmd |{{#invoke:JSON|new|var=true}} |{{#invoke:JSON/cmd|mer| {{#invoke:JSON|new |var1=2 |var2={{#invoke:JSON|new|ㅁㄴㅇㄹ}} }} }} {{#invoke:JSON/cmd|del|var}} {{#invoke:JSON/cmd|get|var2}} }}