- docx (Microsoft Word пішімі);
- pdf (Adobe пішімі);
- mobi (әдетте Amazon Kindle құрылғыларында қолданылады);
- және тағы басқалар (ePub, djvu, fb2...).
JSON
JavaScript нысан белгісі. Сіз онымен біраз таныссыз! Біз бұл туралы осы лекцияда айттық және JSON жүйесінде сериализацияны осында қарастырдық . Бұл өз атауын бір себеппен алды. JSON түрлендірілген Java нысандары шын мәнінде JavaScript нысандарына ұқсайды. Біздің нысанның мағынасын түсіну үшін сізге JavaScript білудің қажеті жоқ:{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
}
Бір нысанды өту қажет емес. JSON сонымен қатар нысандар жиымын қамтуы мүмкін:
[
{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
},
{
"title": "Бесы",
"author": "Федор Достоевский",
"year": 1872
},
{
"title": "Чайка",
"author": "Антон Чехов",
"year": 1896
}
]
JSON JavaScript нысаны болғандықтан, ол келесі JavaScript деректер пішімдерін қолдайды:
- жіптер;
- сандар (сан);
- an objectілер (an object);
- массивтер (массив);
- логикалық мәндер (шын және жалған);
- null.
-
Адам оқи алатын формат. Егер сіздің соңғы пайдаланушыңыз адам болса, бұл айқын артықшылық. Мысалы, сіздің serverіңіз ұшу кестелері бар дерекқорды сақтайды. Адам клиент үйде компьютерде отырғанда веб-қосымшаны пайдаланып осы дерекқордан деректерді сұрайды. Деректерді ол түсінетін пішімде беру қажет болғандықтан, JSON тамаша шешім болып табылады.
-
Қарапайымдылық. Бұл қарапайым деп айтуға болады :) Жоғарыда біз екі JSON файлының мысалын келтірдік. JavaScript бар екенін ешқашан естімеген болсаңыз да (оның нысандарын былай қойғанда), онда қандай нысандар сипатталғанын оңай түсінуге болады.
Барлық JSON құжаттамасы бірнеше суреттері бар бір веб-бет болып табылады. -
Кең таралған. JavaScript – басым интерфейс тілі және ол оның шарттарын белгілейді. JSON пайдалану міндетті болып табылады. Сондықтан көптеген веб-қызметтер деректер алмасу пішімі ретінде JSON пайдаланады. Әрбір заманауи IDE JSON пішімін (соның ішінде Intellij IDEA) қолдайды. Барлық ықтимал бағдарламалау тілдері үшін JSON-мен жұмыс істеу үшін көптеген кітапханалар жазылған.
YAML
Өзінің өмір сүруінің басында ол Yet Another Markup Language – «басқа белгілеу тілі» дегенді білдіреді. Сол кезде ол XML-ге бәсекелес ретінде орналасты. Енді, уақыт өткеннен кейін ол «YAML белгілеу тілі емес» дегенді білдіреді («YAML - белгілеу тілі емес»). Ол қандай? Біздің компьютерлік ойынымыз үшін 3 кейіпкерлер класын жасау керек деп елестетіп көрейік: Жауынгер, Сиқыршы және Ұры. Олар келесі сипаттамаларға ие болады: күш, ептілік, төзімділік және қару жиынтығы. Класс сипаттамасы бар YAML файлымыз келесідей болады:classes:
class-1:
title: Warrior
power: 8
agility: 4
stamina: 7
weapons:
- sword
- spear
class-2:
title: Mage
power: 5
agility: 7
stamina: 5
weapons:
- magic staff
class-3:
title: Thief
power: 6
agility: 6
stamina: 5
weapons:
- dagger
- poison
YAML файлында ағаш құрылымы бар: кейбір элементтер басқаларының ішінде кірістірілген. Әрбір деңгейді белгілеу үшін бос орындардың белгілі бір санын пайдалану арқылы ұя салуды басқара аламыз. YAML форматының қандай артықшылықтары бар?
-
Адам оқи алады. Тағы да, сипаттамасы жоқ yaml файлын көрсеңіз де, онда қандай нысандар сипатталғанын оңай түсінуге болады. YAML - бұл yaml.org сайтының басты беті кәдімгі yaml файлы екенін адам оқуы қаншалықты жақсы :)
-
Ықшамдық. Файл құрылымы бос орындар арқылы қалыптасады: жақшаларды немесе тырнақшаларды пайдаланудың қажеті жоқ.
-
Бағдарламалау тілдеріне тән деректер құрылымдарын қолдау. JSON және басқа да көптеген пішімдерге қарағанда YAML-дің үлкен артықшылығы оның әртүрлі деректер құрылымдарын қолдауы болып табылады. Олардың арасында:
-
!!map
Көшірмелерді алу мүмкіндігі жоқ кілт: мән жұптарының ретсіз жинағы; -
!!omap
Кілттердің реттелген тізбегі: қайталану мүмкіндігі жоқ мән жұптары; -
!!жұптар:
кілттің реттелген тізбегі: қайталану мүмкіндігі бар мән жұптары; - !!
бір-біріне тең емес мәндердің ретсіз тізбегін орнату; - !!seq
Ерікті мәндер тізбегі;
Бұл құрылымдардың кейбірі сізге Java-дан таныс болады! :) Осы мүмкіндіктің арқасында әртүрлі деректер құрылымдарын бағдарламалау тілдерінен YAML пішіміне сериялауға болады.
-
-
Зәкір мен бүркеншік атын пайдалану мүмкіндігі
«Зәкір» және «бүркеншік ат» сөздерінің аудармасы - «зәкір» және «лақап ат». Негізінде, ол YAML-де осы терминдердің мәнін өте дәл сипаттайды.
Олар yaml файлындағы элементті анықтауға және ол қайталанатын болса, файлдың қалған бөлігінде оған сілтеме жасауға мүмкіндік береді. Анкерлік белгі арқылы жасалады
&
және бүркеншік ат көмегімен жасалады*
.Бізде Лев Толстойдың кітаптарының сипаттамасы бар файл бар делік. Әр жолы автордың атын қолмен жазбау үшін біз жай ғана якорь «leo» жасап, қажет кезде бүркеншік атын қолданамыз:
books: book-1: title: War and Peace author: &leo Leo Tolstoy year: 1869 book-2: title: Anna Karenina author: *leo year: 1873 book-3: title: Family Happiness author: *leo year: 1859
Бұл файлды кейбір талдаушымен оқығанда, «Лев Толстой» мәні бүркеншік атымыздың орнына дұрыс орындарға ауыстырылады.
- Деректерді YAML ішінде басқа пішімдерге ендіруге болады. Мысалы, JSON:
books: [ { "title": "War and Peace", "author": "Leo Tolstoy", "year": 1869 }, { "title": "Anna Karenina", "author": "Leo Tolstoy", "year": 1873 }, { "title": "Family Happiness", "author": "Leo Tolstoy", "year": 1859 } ]
Басқа сериялау пішімдері
XML
Бұл пішім тегтер ағашы деп аталатынға негізделген.<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Әрбір элемент ашу және жабу тегіннен (<> және </>) тұрады. Әрбір элементтің кірістірілген элементтері болуы мүмкін. XML - JSON және YAML-ден кем түспейтін жалпы формат (егер нақты жобаларда пайдалану туралы айтатын болсақ). Бізде XML бойынша бөлек дәріс бар .
BSON (екілік JSON)
Оның аты айтып тұрғандай, ол JSON-қа өте ұқсас, бірақ адам оқи алмайды және екілік пішімдегі деректермен жұмыс істейді. Бұл кескіндерді және басқа тіркемелерді сақтау және тасымалдау үшін оны өте ыңғайлы етеді. Сонымен қатар, BSON JSON ішінде қол жетімді емес кейбір деректер түрлерін қолдайды. Мысалы, BSON файлына күнді (миллисекунд пішімінде) немесе тіпті JavaScript codeының бір бөлігін жазуға болады. Танымал NoSQL MongoDB дерекқоры ақпаратты BSON пішімінде сақтайды.Позицияға негізделген протокол
Кейбір жағдайларда бізге тасымалданатын деректер көлемін күрт азайту керек (мысалы, деректер көп болса және жүктемені азайту керек болса). Бұл жағдайда біз позицияға негізделген протоколды пайдалана аламыз , яғни параметрлердің атауларынсыз параметр мәндерін жібереміз."Leo Tolstoy" | "Anna Karenina" | 1873
Бұл пішімдегі деректер толыққанды JSON файлына қарағанда әлдеқайда аз орын алады. Әрине, басқа да сериялау пішімдері бар, бірақ олардың барлығын дәл қазір білудің қажеті жоқ :) Қазір қолданбаларды әзірлеудің салалық стандарты болып табылатын пішімдермен танысып, олардың бір-бірінен артықшылықтары мен айырмашылықтарын есте сақтағаныңыз жақсы. . Ал біздің лекциямыз аяқталды :) Бүгін бір-екі мәселені шешуді ұмытпаңыз! Келесі кездескенше! :)
GO TO FULL VERSION