Прототип и руководство по JSON
Введение в JSON
JSON (JavaScript Object Notation) - это облегченный формат обмена данными.
JSON легко читать и писать людям.
JSON легко анализировать и генерировать на машинах.
JSON основан на подмножестве языка программирования JavaScript.
JSON широко используется API-интерфейсами во всем Интернете и является быстрой альтернативой XML в запросах Ajax.
JSON - это текстовый формат, полностью независимый от языка.
Prototype 1.5.1 и более поздняя версия, поддерживает кодирование и анализ JSON.
Кодировка JSON
Prototype предоставляет следующие методы для кодирования -
NOTE - Убедитесь, что у вас установлена как минимум версия 1.6 prototype.js.
S.No. | Метод и описание |
---|---|
1. | Number.toJSON () Возвращает строку JSON для заданного числа. |
2. | String.toJSON () Возвращает строку JSON для заданной строки. |
3. | Array.toJSON () Возвращает строку JSON для данного массива. |
4. | Hash.toJSON () Возвращает строку JSON для заданного хэша. |
5. | Date.toJSON () Преобразует дату в строку JSON (в соответствии с форматом ISO, используемым JSON). |
6. | Object.toJSON () Возвращает строку JSON для данного объекта. |
Если вы не уверены в типе данных, которые вам нужно кодировать, лучше всего использовать Object.toJSON, поэтому -
var data = {name: 'Violet', occupation: 'character', age: 25 };
Object.toJSON(data);
Это даст следующий результат -
'{"name": "Violet", "occupation": "character", "age": 25}'
Кроме того, если вы используете настраиваемые объекты, вы можете установить свой собственный метод toJSON, который будет использоваться Object.toJSON . Например -
var Person = Class.create();
Person.prototype = {
initialize: function(name, age) {
this.name = name;
this.age = age;
},
toJSON: function() {
return ('My name is ' + this.name +
' and I am ' + this.age + ' years old.').toJSON();
}
};
var john = new Person('John', 49);
Object.toJSON(john);
Это даст следующий результат -
'"My name is John and I am 49 years old."'
Разбор JSON
В JavaScript анализ JSON обычно выполняется путем оценки содержимого строки JSON. Prototype вводит String.evalJSON для решения этой проблемы . Например -
var d='{ "name":"Violet","occupation":"character" }'.evalJSON();
d.name;
Это даст следующий результат -
"Violet"
Использование JSON с Ajax
Использовать JSON с Ajax очень просто. Просто вызовите String.evalJSON в свойстве responseText транспорта -
new Ajax.Request('/some_url', {
method:'get',
onSuccess: function(transport) {
var json = transport.responseText.evalJSON();
}
});
Если ваши данные поступают из ненадежного источника, обязательно очистите его -
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport) {
var json = transport.responseText.evalJSON(true);
}
});