Модуль:JSON/doc
Көрүнүш
This is the documentation page for Модуль:JSON
Бул модулда Lua маанилерин JSON маанилерине (UTF-8 коддолгон Lua саптарында) айландыруу үчүн кээ бир пайдалуу ыкмалар сунушталат.
Тилекке каршы, Луанын берилиштер модели JSONдикинен бир аз айырмаланат, андыктан кандайдыр бир Lua маанисин алып, JSON маанисин кайтарган жалпы функцияны жазуу мүмкүн эмес, ар дайым "туура иш кылып". Тескерисинче, кээ бир баалуулуктарды такыр эле айландыруу мүмкүн эмес, ал эми башка баалуулуктардын бир нече эквиваленттүү эмес өкүлчүлүктөрү бар.
Айырмачылыктар төмөнкүлөр:
- Луанын JSON аналогу жок үч түрү бар, атап айтканда function, userdata жана thread, ошондуктан бул модулда ал түрлөрдүн маанилери колдоого алынбайт.
- Луанын "меттаблицалар" концепциясы JSONда аналогу жок, ошондуктан бул модуль метатаблицаларды толугу менен этибарга албайт.
- Луанын number түрү, Scribuntoдо ишке ашырылгандай, кош тактыктагы калкыма чекиттик маанилерден турат, ал эми JSONдун сан түрү ондук көрсөтүүлөрдөн турат. (Жана JSON берилиштерин акыркы алуучу, кыязы, маанилерди кандайдыр бир калкыма чекиттик белгиге айландырышы мүмкүн.) Бул бүтүн сандардан тышкары, жалпысынан маанилердин так конвертацияланышын күтө албайсыз дегенди билдирет. (Жана бүтүн сандар менен да, сиз ±109 же башка диапазондо кемчиликсиз конвертацияны гана күтө аласыз.) Андан тышкары, Луанын эч кандай JSON аналогдору жок бир нече сандык маанилери бар, тактап айтканда, оң чексиздик, терс чексиздик жана "сан эмес" маанилери; ошондуктан, бул модул бул баалуулуктарды колдобойт.
- Луанын string түрү сегиз биттик байт саптарын билдирет, ал эми JSONдун *сап* түрү Юникод символдорунун саптарын билдирет. Бул модулда Lua саптары жарактуу UTF-8 ырааттуулугу болушун талап кылат.
- Луа бир гана table тибиндеги ыктыярдуу nil эмес маанилерден ыктыярдуу nil эмес маанилерге чейин бир гана картага ээ болсо, JSON өзүнчө "'массивге" ээ. ' жана объект түрлөрү, мында массив {0,1,…,n} бүтүн сандардын жыйындысынан ыктыярдуу маанилерге, ал эми объект ыктыярдуу саптардан ыктыярдуу маанилерге карталарды түзөт. Натыйжада, бул модул [TBD]
(Эскертүү: жогорудагы айырмачылыктардын толук тизмеси аракети, бирок мен кээ бирлерин өткөрүп жиберген болушум толук мүмкүн.)