ЈСОН формат: пример и опис

20. 2. 2019.

ЈСОН је скраћеница од Јава сцрипт Објецт Нотатион, који је формат за који се користи текст који је читљив за људе пренос података који се састоји од пара атрибута-вредности. Ово је најчешћи формат података који се користи за асинхрону комуникацију између претраживача и сервера, углавном замјењујући КСМЛ (користећи АЈАКС).

јсон формат

ЈСОН је формат података независан од језика који је изведен из ЈаваСцрипт-а. Од 2017. године, многи програмски језици су користили код за генерисање и анализу података у њему. ЈСОН називи датотека користе .јсон екстензију.

Историја стварања

Оригинални ЈСОН формат је развио Доуглас Цроцкфорд на почетку нуле, а затим су га два конкурентна стандарда (РФЦ 7159 и ЕЦМА-404) дефинисала 2013. године. ЕЦМА стандард описује само важећу синтаксу, док РФЦ покрива неке од основа сигурности и интероперабилности.

Поред тога, ту је и РФЦ 7493 стандард, који дефинира ограничени профил познат као И-ЈСОН (скраћено од “Интернет ЈСОН”). Он покушава да превазиђе неке од проблема интеракције. Сваки такав документ је важећи ЈСОН документ.

Потреба за креирањем овог формата израсла је из потребе за правим протоколом комуникације између сервера и претраживача, који се имплементира у реалном времену без употребе додатака (као што су Фласх или Јава аплети).

јсон формат него отворен

Развој и примена

Као што је већ напоменуто, Доуглас Цроцкфорд, као творац СтатеСофтвареа, први је идентификовао и популаризирао ЈСОН формат. Након тога, суоснивачи су се сложили да креирају систем који користи стандардне могућности претраживача и обезбедили су слој апстракције за програмере да креирају апликације са континуалном дуплекс конекцијом на веб сервер. У исто време, постало је могуће да се отворе две ХТТП везе и обраде их до стандардног времена прегледача ако нема размене података. Суоснивачи су одржали дискусију на округлом столу и гласали за именовање ЈСМЛ или ЈСОН формата података, као и за одређивање врсте лиценце по којој ће нови развој бити доступан. Тренутно је формат отвореног кода.

јсон формат онлине

Практична употреба

Сајт ЈСОН.орг је покренут 2002. године. У децембру 2005, Иахоо! почео је да нуди неке од својих веб сервиса у овом формату. Гоогле је почео да користи ЈСОН феедове за свој ГДата веб протокол само у децембру 2006.

Оригинално формат датотеке ЈСОН је био намењен за подскуп ЈаваСцрипт скриптног језика (посебно Стандард ЕЦМА-262 3. издање-децембар) и обично се користио са њим. Међутим, то је формат неовисан о језику података. Код за парсирање и генерисање ЈСОН података доступан је на многим програмским језицима. ЈСОН вебсајт наводи све библиотеке.

Иако је онлине ЈСОН формат првобитно оглашаван и сматра се строгим подскупом ЈаваСцрипт-а и ЕЦМАСцрипт-а, он повремено дозвољава неке знакове који се не приказују у низовима који нису важећи у ЈаваСцрипт-у и ЕЦМАСцрипт-у.

Сам ЈСОН је постао међународни ЕЦМА стандард 2013. године као ЕЦМА-404 стандард, који је кориштен у РФЦ 7158 исте године као референца. У 2014. години, РФЦ 7159 је постао главна референца за коришћење ЈСОН-а на Интернету (на пример, МИМЕ апликација / јсон).

Врсте података синтакса и пример

Главни типови ЈСОН података су:

  • Број: Потписани децимални број који може да садржи фракцијски део и може да користи експоненцијалну ознаку Е, али не може укључити не-бројеве (на пример, НаН). Формат не прави разлику између бројева и бројева с помичним зарезом. ЈаваСцрипт користи формат двоструке прецизности с помичним зарезом за све своје нумеричке вриједности, али други језици који имплементирају ЈСОН могу их кодирати различито.

пример јсон формата

  • Стринг: низ од нула или великих уницоде знакова. Низови су одвојени двоструким наводницима и подржавају синтаксу са обрнутом косом цртом.
  • Литерали: било која од вредности труе или фалсе.
  • Арраи: Наређена листа нула или више вриједности, од којих свака може бити било које врсте. Низови користе углате заграде са зарезима.
  • Објецт: Неуређен скуп парова имена / вредности, где су имена (такође названа кључеви) низови. Како су објекти намијењени представљању асоцијативних низова, препоручује се (иако није неопходно) да сваки кључ буде јединствен унутар њега. Објекти су раздвојени витичастим заградама и користе зарезе за раздвајање сваког пара, док унутар сваког од њих знак двоточке одваја кључ или име од његове вриједности.
  • Нулл: Нулл вредност која користи реч нулл.

Ограничени простори су дозвољени и могу се поставити око или између синтаксних елемената (вредности и интерпункција, али не унутар вредности стринга). У ту сврху разматрају се само четири специјална знака. простори: простор, хоризонтална картица, преусмеравање и коса црта. Конкретно, ознака бајтова не би требала бити генерисана одговарајућом имплементацијом (иако се може усвојити приликом парсирања ЈСОН). Захтјев у ЈСОН формату не даје синтаксу за коментаре.

Ране верзије (на пример, оне наведене у РФЦ 4627) захтевају да важећи документ садржи само објекат или тип поља који може садржати друге типове унутар њих. Такав ЈСОН формат, чији се пример може наћи на застарелим веб страницама, тренутно се не користи.

уплоад у јсон формату

Проблеми са преносивошћу података

Иако је Доуглас Цроцкфорд првобитно тврдио да је ЈСОН строго подскуп ЈаваСцрипта, његова спецификација вам заправо омогућава да креирате документе који нису читљиви у ЈаваСцрипту. Конкретно, ЈСОН дозвољава Уницоде У + 2028 ЛИНЕ СЕПАРАТОР и У + 2029 ПАРАГРАПХ СЕПАРАТОР низа вредности да се не приказују на наведеним линијама, али ЈаваСцрипт не. То је због чињенице да ЈСОН забрањује само "контролне знакове". Да бисте постигли максималну компатибилност, ове знакове треба уклонити обрнутом косом цртом. Ова суптилност је важна приликом креирања ЈСОНП-а.

ЈСОН-формат: како отворити?

ЈСОН документи се могу кодирати у УТФ-8, УТФ-16 или УТФ-32, подразумевано кодирање је УТФ-8. Ови стандарди подржавају комплетан скуп Уницоде знакова, укључујући знакове изван главне вишејезичне равнине (од У + 10,000 до У + 10ФФФФ). Међутим, ако су изостављени, ови знакови морају бити написани користећи УТФ-16 сурогатне парове - детаљи које недостају неким анализаторима у ЈСОН формату. Како отворити и како ће се таква датотека прочитати?

Бројеви у овом формату су агностички у односу на њихову заступљеност у програмским језицима. Не постоји разлика између цијелог броја и вриједности с помичним зарезом: неке имплементације могу узети у обзир 42, 42.0 и 4.2Е + 1 као исти број, док друге не. Поред тога, не постоје захтеви за питања као што су преливање, недостатак, губитак тачности или заокруживање. Поред тога, ЈСОН формат не говори ништа о обради потписаних нула, без обзира да ли се 0.0 разликује од -0.0. Већина имплементација које користе ИЕЕЕ 754 стандард с помичним зарезом, укључујући ЈаваСцрипт, задржавају потписане нуле, али не могу све ЈСОН имплементације.

захтев у јсон формату

Користите у јавасцрипт

Пошто је ЈСОН формат изведен из ЈаваСцрипта и његова синтакса је (углавном) подскуп језика, можете користити ЈаваСцриптевал функцију за анализу ЈСОН података. Због проблема са рашчлањивањем Уницоде стринг терминатора о којима је било речи у претходном одељку, функција евал мора извршити њихову замену.

Ово је несигурно ако стринг није исправно потврђен. Уместо тога, да бисте читали и писали ЈСОН, користите ЈСОН библиотеку парсера или његову ЈаваСцрипт подршку.

Исправно имплементиран парсер прихваћа само важећи ЈСОН формат, чији је опис присутан у систему, спречавајући ненамјерно извршавање потенцијално злонамјерног кода.

Од 2010. године веб претраживачи као што су Фирефок и Интернет Екплорер омогућили су подршку за анализу и отпремање у ЈСОН формат.

Неподржани основни типови података

ЈаваСцрипт синтакса дефинише неколико изворних типова података који нису укључени у ЈСОН стандард: мапа, сет, датум, грешка, регуларни израз, функција и неке друге. Ови ЈаваСцрипт типови података морају бити представљени неким другим форматима, при чему се оба програма слажу око типа конверзије између типова. Данас постоје неки дефакто стандарди, на пример, конвертовање датума у ​​стринг, али ниједан од њих није опште прихваћен. Други језици могу имати другачији скуп изворних типова који морају бити пажљиво серијски раздвојени да би се могли носити с овом врстом конверзије.

опис јсон формата

ЈСОН шема

Шема се користи за дефинисање ЈСОН структуре података за валидацију, документовање и управљање интеракцијом. Он обезбеђује врсту уговора за податке које захтева апликација и начин да се она промени.

Шема се заснива на концептима из КСМЛ шеме (КССД), али је изворна. Као и код КССД-а, исти алати за серијализацију / десериализацију се користе и за шему и за податке.

Шема је онлине пројекат који је тренутно у верзији 5 (објављен 13. октобра 2016). Постоји неколико валидатора доступних за различите програмске језике, од којих сваки има различит ниво усклађености. Не постоји стандардно проширење датотеке, али неки експерти предлажу одобравање .сцхема.јсон.

МИМЕ типе

Званични МИМЕ тип за ЈСОН текст је “апплицатион / јсон”. Упркос чињеници да је већина модерних имплементација усвојила званични МИМЕ тип, многе апликације настављају да пружају подршку за друге МИМЕ типове. Многи добављачи услуга, претраживачи, сервери, веб апликације, библиотеке, оквири и АПИ-ји користе, очекују или препознају МИМЕ тип, чији садржај изгледа као "тект / јсон" или "тект / јавасцрипт". Значајни примери укључују Гоогле Сеарцх АПИ, Иахоо !, Флицкр, Фацебоок АПИ, ДојоТоолкит 0.4, и тако даље.

ЈСОН-РПЦ

ЈСОН-РПЦ је протокол удаљеног процедуралног позива (РПЦ) изграђен на ЈСОН-у, креиран као замена за КСМЛ-РПЦ или СОАП. Ово је једноставан протокол који дефинише само неколико типова података и команди. Омогућава систему да шаље обавештења (информације на сервер који не захтева одговор) и неколико позива на сервер, на које се може одговорити ван реда.

АЈАЈ

Асинкрони ЈаваСцрипт и ЈСОН (или АЈАЈ) припадају истој методологији динамичке веб странице као Ајак, али умјесто КСМЛ-а, ЈСОН подаци су главни формат. АЈАЈ је веб развојна технологија која омогућава веб страници да тражи нове податке након што се учита у претраживач. Обично их приказује са сервера као одговор на корисничке акције на овој страници. На пример, оно што корисник унесе у поље за претрагу, клијентски код затим шаље серверу, који одмах одговара са падајућом листом релевантних ставки базе података.

Безбедносна питања

ЈСОН текст је дефинисан као објекат за серијализацију података. Међутим, његов дизајн, као лабаво дефинисан подскуп ЈаваСцрипт скриптног језика, представља неколико безбедносних проблема. Они се фокусирају на коришћење Јавасцрипт интерпретера да динамички извршавају ЈСОН текст као уграђени ЈаваСцрипт. Ово излаже програм погрешним или злонамерним скриптама. Ово је озбиљан проблем када радите са подацима који се добијају са Интернета.

Овај једноставан и популаран, али ризичан метод користи компатибилност са ЈаваСцриптевал функцијом.

Неки програмери погрешно верују да је ЈСОН текст синтактички сличан ЈаваСцрипт коду, иако је то само делимично тачно. Стога се верује да је једноставан начин за ЈаваСцрипт програм за анализу података у овом формату да користи уграђену функцију ЈаваСцриптевал, која је дизајнирана да процени изразе "Јавасцрипт". Уместо да се користи одређени парсер, сам преводилац се користи за извршавање ЈСОН података, креирајући природне ЈаваСцрипт објекте. Међутим, овај метод је ризичан ако је вероватно да ЈСОН подаци могу да садрже произвољни Јавасцрипт код, који ће се онда извршити на исти начин. Уколико се не предузму мере за валидацију података, евал метода је рањива на сигурносне пропусте када подаци и целокупно ЈаваСцрипт окружење нису под контролом једног поузданог извора.

На пример, ако подаци нису проверени, они подлежу злонамерним нападима ЈаваСцрипт кода. Таква кршења такође могу створити ризик од крађе података, проневере аутентичности и друге потенцијалне злоупотребе података и ресурса.

Тако је нова ЈСОН.парсе функција развијена као сигурнија алтернатива за евал. Посебно је дизајниран за обраду података точно ЈСОН, а не ЈаваСцрипт. Он је првобитно био предвиђен за укључивање у четврто издање ЕЦМАСцрипт стандарда, али се то није догодило. Први пут је додан верзији 5 и сада је подржан од стране главних претраживача.