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.

en ยท ru ยท uk ยท fr ยท de ยท it ยท es ยท zh-tw ยท ja ยท ko

Basic