API JsonSave ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
JsonSave
ClassicUO โข Runtime API
๊ฐ์ JSON ํ์ผ์ ์ ์ฅํฉ๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
JsonSave(fileName:String, value:Any) -> Unit
JsonSave(fileName:String, value:Any, indented:Integer) -> Unit
๋งค๊ฐ๋ณ์
fileNameโ ํ์ ํ์ผ ๊ฒฝ๋ก. ์๋ ๊ฒฝ๋ก๋ Include์์ ํธ์ถํด๋ ๋ฉ์ธ ์คํฌ๋ฆฝํธ ํด๋ ๊ธฐ์ค์ ๋๋ค. ์ ๋ ๊ฒฝ๋ก๋ ํ์ฉํฉ๋๋ค.valueโ ์ซ์, String, ๋ฐฐ์ด, List, Dictionary, JsonBoolean ๋๋ JsonNull. Dictionary ํค๋ String์ด์ด์ผ ํฉ๋๋ค. ์ฐธ์กฐ ๊ณต์ ๋ ํ์ฉํ์ง๋ง ์ํ ์ฐธ์กฐ๋ ์ค๋ฅ์ ๋๋ค.indentedโ Integer ํ๋๊ทธ:0์ ์์ถ ํ์, 0์ด ์๋๋ฉด ๋ค์ฌ์ฐ๊ธฐ. ๊ธฐ๋ณธ๊ฐ:Stringify=0, Save=1.
๋ฐํ๊ฐ
Unit:๋ฐํ๊ฐ ์์. ์ ์ ์ข ๋ฃ๊ฐ ์ฑ๊ณต์ด๋ฉฐ ์ค๋ฅ๋ Try/Catch๋ก ์ฒ๋ฆฌํฉ๋๋ค.
๋์
- UO. ์๋ ๋ก์ปฌ Basic ํจ์์ด๋ฉฐ ๊ฒ์ ํจํท์ ๋ณด๋ด์ง ์์ต๋๋ค. JsonParse/JsonStringify๋ ๋ฉ๋ชจ๋ฆฌ์์ ์๋ํฉ๋๋ค. Basic True๋ ์ซ์1๋ก ์ ์ฅ๋๋ฏ๋ก JSON true์๋ JsonBoolean(True)๋ฅผ ์ฌ์ฉํฉ๋๋ค. JsonNull()์ null๊ณผ0์ ๊ตฌ๋ถํฉ๋๋ค.
- ์ ํํ ์ซ์๋ง ํ์ฉํฉ๋๋ค. ์ ์ ๊ฐ์ด ยฑ9007199254740991 ๋ฒ์๋ฅผ ๋์ผ๋ฉด ์ค๋ฅ์ด๋ฉฐ ํฐ ID๋ String์ผ๋ก ์ ์ฅํฉ๋๋ค. ๋ค๋ฅธ ์ซ์๋ Double ์ ๋ฐ๋์ ๋๋ค. ์๊ฒฉํ UTF-8์ ์ฌ์ฉํ๋ฉฐ ์ ๋ ฅ BOM์ ํ์ฉํ๊ณ ์ถ๋ ฅ์๋ ์์ต๋๋ค. ์๋ชป๋ Unicode๋ ์ค๋ฅ์ ๋๋ค.
- ์ ํ:1048576 UTF-16 ์ฝ๋ ๋จ์,4MiB,64๋จ๊ณ ์ปจํ ์ด๋,100000 ๊ฐ ๋ ธ๋. ์ด๊ณผํ๋ฉด ์ค๋ฅ์ ๋๋ค. ๋ถ์/์ฝ๊ธฐ๋ ์ ์ปฌ๋ ์ ์ ๋ง๋ค๋ฉฐ ์ ์ฅ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ์ง ์์ต๋๋ค.
- Save๋ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ๊ณ ๋ถ๋ชจ ํด๋๋ฅผ ๋ง๋ ๋ค ๋์ ์์ ๊ณ ์ ์์ ํ์ผ์ ์ฐ๊ณ ๋ฒํผ๋ฅผ ๋น์ด ํ ์ด๋/๊ต์ฒดํฉ๋๋ค. ๊ต์ฒด ์ ์คํจ/์ทจ์๋ ๊ธฐ์กด ํ์ผ์ ๋ณด์กดํฉ๋๋ค. OS๊ฐ ํ์ฉํ๋ฉด ์์ ํ์ผ์ ์ ๋ฆฌํฉ๋๋ค. ์๋ฃ๋ ๊ต์ฒด๋ ์ทจ์ํ์ง ์์ต๋๋ค.
- 256๊ฐ ๊ฐ๋ง๋ค,4096๋ฐ์ดํธ/๋ฌธ์ ๋ธ๋ก ์ฌ์ด ๋ฐ ๊ต์ฒด ์ ์ ์ผ์์ ์ง/์ค์ง๋ฅผ ํ์ธํฉ๋๋ค. ์ถ๊ฐ ์ค๋ ๋๋ฅผ ๋ง๋ค์ง ์์ผ๋ฉฐ ๊ฐ๋ณ OS ํธ์ถ์ ๊ฐ์ ์ค๋จํ ์ ์์ต๋๋ค. ๋์ ์ ์ฅ์ ๋ง์ง๋ง ์ฑ๊ณต ๊ต์ฒด๊ฐ ๋จ์ผ๋ฉฐ DB ํธ๋์ญ์ ์ด ์๋๋๋ค.
๋ด๋ถ ํจ์: ํธ์ถ๋ถํฐ ๊ฒฐ๊ณผ๊น์ง
๊ฐ์ JSON ํ์ผ์ ์ ์ฅํฉ๋๋ค.
1. Save
ํ์ ํ์ผ ๊ฒฝ๋ก. ์๋ ๊ฒฝ๋ก๋ Include์์ ํธ์ถํด๋ ๋ฉ์ธ ์คํฌ๋ฆฝํธ ํด๋ ๊ธฐ์ค์ ๋๋ค. ์ ๋ ๊ฒฝ๋ก๋ ํ์ฉํฉ๋๋ค. ์ซ์, String, ๋ฐฐ์ด, List, Dictionary, JsonBoolean ๋๋ JsonNull. Dictionary ํค๋ String์ด์ด์ผ ํฉ๋๋ค. ์ฐธ์กฐ ๊ณต์ ๋ ํ์ฉํ์ง๋ง ์ํ ์ฐธ์กฐ๋ ์ค๋ฅ์ ๋๋ค. Integer ํ๋๊ทธ:0์ ์์ถ ํ์, 0์ด ์๋๋ฉด ๋ค์ฌ์ฐ๊ธฐ. ๊ธฐ๋ณธ๊ฐ:Stringify=0, Save=1.
Unit:๋ฐํ๊ฐ ์์. ์ ์ ์ข ๋ฃ๊ฐ ์ฑ๊ณต์ด๋ฉฐ ์ค๋ฅ๋ Try/Catch๋ก ์ฒ๋ฆฌํฉ๋๋ค.
ํ๋ก์ ํธ ์์ค: external/InjectionScript/src/InjectionScript/Runtime/BasicJson.cs; ํจ์ Save.
Config.Load(fileName, defaults)๋ ์ Dictionary๋ฅผ ๋ฐํํฉ๋๋ค. ์ ์ฅ๋ ์ต์์ ํค๊ฐ defaults์ ๊น์ ๋ณต์ฌ๋ณธ์ ๋ฎ์ด์ฐ๊ณ ์ค์ฒฉ ๊ฐ์ฒด๋ ํต์งธ๋ก ๊ต์ฒดํฉ๋๋ค. Config.Save(fileName, settings)๋ ๋ช ์์ ์ผ๋ก ์ ์ฅํ๋ฉฐ ๋ฐํ๊ฐ์ด ์์ต๋๋ค. Config.GetFlag(settings, key, fallback=False)๋1/True ๋๋0/False๋ฅผ ๋ฐํํ๋ฉฐ ๊ธฐ์กด ๊ฐ์ด ๋ถ๋ฆฌ์ธ์ด ์๋๋ฉด ์ค๋ฅ์ ๋๋ค. Config.SetFlag(settings, key, value)๋ ๋ฉ๋ชจ๋ฆฌ๋ง ๋ณ๊ฒฝํ๊ณ ๋ฐํ๊ฐ์ด ์์ต๋๋ค. Load/Save๋ String ํค Dictionary๊ฐ ํ์ํฉ๋๋ค. ๋ด๋ถ Private RequireObject๋ ๋ฐ๊นฅ ์ข ๋ฅ๋ฅผ ํ์ธํ๊ณ JSON ๋ณํ์ ์ ์ฒด ๋ด์ฉ์ ๊ฒ์ฆํฉ๋๋ค.
์์
JsonSave ยท 1
# JsonSave ยท 1
#
# ๊ฐ์ JSON ํ์ผ์ ์ ์ฅํฉ๋๋ค.
#
# Unit:๋ฐํ๊ฐ ์์. ์ ์ ์ข
๋ฃ๊ฐ ์ฑ๊ณต์ด๋ฉฐ ์ค๋ฅ๋ Try/Catch๋ก ์ฒ๋ฆฌํฉ๋๋ค.
Option Explicit On
Sub Main()
# Main์ ์คํํฉ๋๋ค. fileName="json-save-demo.json", value=d, indented=1 โ file; JsonLoad โ
# delay=Integer350.
Dim d=JsonParse('{"delay":350}')
JsonSave('json-save-demo.json', d)
Dim loaded=JsonLoad('json-save-demo.json')
Return loaded['delay']
End Sub
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- Main์ ์คํํฉ๋๋ค. fileName="json-save-demo.json", value=d, indented=1 โ file; JsonLoad โ delay=Integer350.
JsonSave ยท 2
# JsonSave ยท 2
#
# ๊ฐ์ JSON ํ์ผ์ ์ ์ฅํฉ๋๋ค.
#
# Unit:๋ฐํ๊ฐ ์์. ์ ์ ์ข
๋ฃ๊ฐ ์ฑ๊ณต์ด๋ฉฐ ์ค๋ฅ๋ Try/Catch๋ก ์ฒ๋ฆฌํฉ๋๋ค.
Option Explicit On
Sub Main()
# Main์ ์คํํฉ๋๋ค. fileName="json-save-array.json", value=List, indented=False=0 โ compact
# [true,null,7].
JsonSave(indented:=False, value:=JsonParse('[true,null,7]'), fileName:='json-save-array.json')
Return JsonStringify(JsonLoad('json-save-array.json'))
End Sub
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- Main์ ์คํํฉ๋๋ค. fileName="json-save-array.json", value=List, indented=False=0 โ compact [true,null,7].
JsonSave ยท 3
# JsonSave ยท 3
#
# ๊ฐ์ JSON ํ์ผ์ ์ ์ฅํฉ๋๋ค.
#
# Unit:๋ฐํ๊ฐ ์์. ์ ์ ์ข
๋ฃ๊ฐ ์ฑ๊ณต์ด๋ฉฐ ์ค๋ฅ๋ Try/Catch๋ก ์ฒ๋ฆฌํฉ๋๋ค.
Option Explicit On
Sub Main()
# Main์ ์คํํฉ๋๋ค. fileName="json-replace-demo.json", value=7; next value=cyclic List โ Catch;
# JsonLoad โ original Integer7.
JsonSave('json-replace-demo.json', 7)
Dim cycle=List()
cycle.Add(cycle)
Try
JsonSave('json-replace-demo.json', cycle)
Catch problem
Return JsonLoad('json-replace-demo.json')
End Try
Return 0
End Sub
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
- Main์ ์คํํฉ๋๋ค. fileName="json-replace-demo.json", value=7; next value=cyclic List โ Catch; JsonLoad โ original Integer7.