JSON формат - Уебсайт - U Extreme
С появата на формата JSON можете да се откажете от използването на XML формат за прехвърляне на данни между сървъра и клиента. Но не бива да забравяте напълно и XML, тъй като има много предимства при използването му.
Вторият начин Можете да създадете същия обект, като използвате буквална нотация:
var Item = "Name":"Тениска", "Описание":"Цветна тениска в различни размери", "цена":"1500", "Наличност": false > Внимание! Литералната анотация всъщност е форматът JSON.
С други думи, ако предадем текста на заявката на браузъра в отговора на сървъра:
В резултат на изпълнението на този скрипт ще видим съобщението „Здравей свят!“:
Да се върнем към нашия JSON формат. Предаваме получения низ sData на eval() и показваме целия списък с обектни полета в съобщението.
В резултат на това получаваме:
Обърнете внимание на формата на предаване на текст към eval():
1 eval("(" + sData + ")"); За правилното тълкуване на JSON обекта, трябва да оградите текста със скоби. Или да присвоите буквална нотация на обекта:
1 var Item = eval("obj = " + sData); В този случай първо ще бъде създаден обектът obj, а след това обектът Item с полета с методи на обекта obj.
Използвайки формата JSON от сървъра, можете да прехвърляте данни като:
запис, структура, хеш таблица, списък, асоциативен масив. Всички тези структури от данни се поддържат от всеки съвременен език за програмиране, което е важен аргумент при избора на метод за пренос на данни с помощта на JSON формат.
Концепцията за JSON включва такива понятия като:
Обектът е набор от двойки име:стойност във фигурни скоби < > разделени с двоеточие.
"Описание": "Размер": ["S", "M", "L", "XL"], "Цвят": ["Червен", "Зелен", "Син"] > > Стойност - число, низ, булеви стойности true, false, null.
Пример за използване на различни стойности:
"Product": "T-shirt", "Price": 1500, "Stock": false, "Description": "Size":["S","M","L","XL"], "Color":["Red","Green","Blue"] > > Ето друг пример за интерпретиране на сложен JSON обект с вложени масиви:
Както можете да видите, ние извадихме информацията, съхранена във вложени масиви от обекта:
1 2 Item['Description']['Size'][1] Item['Description']['Color'][1] Мисля, че всичко е ясно от страна на клиента: получаваме низа, конвертираме го в обект и работим с него по-нататък. Как да се справим със сървърната страна, а не ръчно, защото трябва да формираме JSON обекти...
Функции на PHP за работа с JSON Браво на разработчиците на PHP, те свършиха цялата тежка работа вместо нас. Не е нужно да пишем наши собствени парсери за PHP обекти, масиви и други структури. Ако искаме да получим масив във формат JSON, трябва да използваме само вградените готови php функции: json_encode() и json_decode().
Например, имаме php скрипт, който работи със същия каталожен обект за онлайн магазин.
клас Продукт public $name; обществена $цена; публично $описание;
функция Product() $this->name = "Тениска"; $това->цена = 1500; $this->description= array( "size"=>array("S","M","L","XL"), "color"=>array("Red","Green","Blue") ); > >
$Item = new Product(); echo " ".$Item->name; echo " ".$Item->price; echo " ".$Item->description['size'][1]; echo " ".$Item->description['color'][1]; Сега си представете, че искаме да предадем нашия създаден обект във формат JSON за по-нататъшно използване от страна на клиента.Всичко, което трябва да направите, е просто да предадете екземпляр на класа на json_encode().
1 $send_json=json_encode($Item); В резултат на изпълнението на този ред код, следната информация ще бъде записана в променливата $send_json:
Сега нека се опитаме да десериализираме обратно получените данни с помощта на json_decode().
Да предположим, че получаваме JSON низ, съдържащ информация за обект в PHP скрипт:
Използваме json_decode( ), за да десериализираме получените данни и да ги запишем всички в променливата $Item. Така получихме пълноправен екземпляр на класа Product.
Обърнете внимание в кода на втория параметър на функцията, на която се предава стойността
1 json_decode($json, true); Това е за избягване на грешката:
1 Не може да се използва обект от тип stdClass Факт е, че в нашия пример използваме вложени масиви за полето 'description' и без параметъра true функцията json_decode() интерпретира такива полета като stdClass, в резултат на което достъпът до тях е невъзможен.
И накрая, ще предложа на вашето внимание, скъпи читателю, функция, с която можете да запазите четливия вид на обект със знаци на кирилица.