Я просмотрел википедию, прогуглил ее и прочитал официальную документацию, но до сих пор не дошел до того, что действительно понимаю, что такое JSON и почему я его использую.
Я некоторое время создавал приложения, используя PHP, MySQL и Javascript / HTML, и если JSON сможет что-то сделать, чтобы моя жизнь стала проще, или мой код стал лучше, или мой пользовательский интерфейс лучше, то я бы хотел знать об этом. Может ли кто-нибудь дать мне краткое объяснение?
JSON (Объектная нотация JavaScript) является легким форматом, который используется для обмена данных. Это основано на подмножестве языка сценариев JavaScript (способ, которым объекты создаются в JavaScript). Как [1 112] указанный в MDN, некоторый JavaScript не является JSON, и некоторым JSON не является JavaScript.
примером того, где это используется, являются ответы веб-сервисов. В 'старые' дни веб-сервисы использовали XML в качестве своего формата первичных данных для передачи назад данных, но так как JSON появился (, формат JSON определяется в [1 113] RFC 4627 Douglas Crockford ), это был предпочтительный формат, потому что это - намного больше легкий вес
, можно найти намного больше информации о чиновнике веб-сайт JSON .
JSON основан на двух структурах:
Вот пример данных JSON:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
<час> JSON (в JavaScript) является строкой!
Люди часто предполагают, что все объекты JavaScript являются JSON и что JSON является объектом JavaScript. Это неправильно.
В Javascript var x = {x:y}
не JSON, это объект JavaScript . Эти два не являются тем же самым. Эквивалент JSON (представленный на языке сценариев JavaScript) был бы var x = '{"x":"y"}'
. x
объект строки типа не объект в своем собственном праве. Для превращения это в полностью оперенный JavaScript возражает, что необходимо сначала проанализировать его, var x = JSON.parse('{"x":"y"}');
, x
теперь объект, но это больше не JSON.
Видят объект JavaScript По сравнению с <часом> JSON
При работе с JSON и JavaScript, можно испытать желание использовать эти eval
функция для оценки результата, возвращенного в обратном вызове, но это не предлагается, так как существует два символа (U+2028 & U+2029) допустимый в JSON, но не в JavaScript (читает больше из этого здесь ).
Поэтому нужно всегда пытаться использовать сценарий Crockford, который проверяет на допустимый JSON прежде, чем оценить его. Свяжитесь с объяснением сценария, найден здесь и здесь прямая ссылка в js файл. Каждый главный браузер в наше время имеет его собственная реализация для этого.
Пример о том, как использовать синтаксический анализатор JSON (с json от вышеупомянутого фрагмента кода):
//The callback function that will be executed once data is received from the server
var callback = function (result) {
var johnny = JSON.parse(result);
//Now, the variable 'johnny' is an object that contains all of the properties
//from the above code snippet (the json example)
alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};
синтаксический анализатор JSON также предлагает другой очень полезный метод, stringify
. Этот метод принимает объект JavaScript в качестве параметра, и выводы поддерживают строку форматом JSON. Это полезно для того, когда Вы хотите к [1 149], передают данные обратно серверу:
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}
вышеупомянутые два метода (parse
и stringify
) также берут второй параметр, который является функцией, которая будет вызвана для каждого ключа и значения на каждом уровне конечного результата, и каждое значение будет заменено результатом Вашей введенной функции. (Больше на этом здесь )
Btw, для всех Вас там, кто думает, JSON только для JavaScript, проверьте это сообщение , который объясняет и подтверждает иначе.
<час>мне нравится JSON главным образом, потому что это настолько кратко . Для веб-контента, который может быть gzipped, это - не обязательно грандиозное предприятие (следовательно, почему x HTML так популярен). Но существуют случаи, где это может быть выгодно.
, Например, для одного проекта я передавал информацию, которая должна была быть сериализирована и передана через XMPP. Так как большинство серверов ограничит объем данных, который можно передать в единственном сообщении, я нашел полезным использовать JSON по очевидной альтернативе, XML.
, Поскольку добавленная премия, если Вы знакомы с Python или JavaScript, Вы уже в значительной степени, знает JSON и может интерпретировать его без большого обучения вообще.
Короче говоря, это - нотация сценариев для передающих данных о. До некоторой степени альтернатива XML, исходно поддерживая типы основных данных, массивы и ассоциативные массивы (пары "имя-значение", названные Объектами, потому что, именно это они представляют).
синтаксис - то, что используемый в JavaScript и самом JSON обозначает "Объектную нотацию JavaScript". Однако это стало портативным и используется на других языках также.
полезная ссылка А для детали здесь:
Короче говоря - JSON является способом сериализировать таким способом, что это становится кодом JavaScript. Когда выполняется (с оценкой или иначе), этот код создает и возвращает объект JavaScript, который содержит данные, которые Вы сериализировали. Это доступно, потому что JavaScript позволяет следующий синтаксис:
var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
'StringProperty' : 'Value',
'IntProperty' : 12,
'ArrayProperty' : [ 1, 2, 3],
'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.
можно использовать это в нескольких целях. Для одного это - удобный способ передать данные от Вашего бэкенда сервера до Вашего кода JavaScript. Таким образом это часто используется в Ajax.
можно также использовать его в качестве автономного механизма сериализации, который более прост и занимает меньше места, чем XML. Многие библиотеки существуют, которые позволяют Вам сериализировать и десериализовывать объекты в JSON для различных языков программирования.
общий короткий ответ: при использовании Ajax для выполнения запросов данных, можно легко отправить и эхо-сигналы как строки JSON. Доступные расширения для поддержки JavaScript toJSON () обращаются ко всем типам данных JavaScript для отправки данных к серверу в запросе Ajax. Ответы Ajax могут эхо-сигналы как строки JSON, которые могут быть преобразованы в объекты JavaScript простым вызовом оценки, например, если бы функция Ajax someAjaxFunctionCallReturningJson возвратилась
"{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"
, то Вы могли бы записать в Javascript
var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
alert(obj.FirstName);
alert(obj.LastName);
JSON, может также использоваться для полезных нагрузок веб-сервиса и др., но это действительно удобно для результатов Ajax.
Мы должны сделать проект в колледже, и мы столкнулись с очень большой проблемой, это называют Той же политикой Источника. Amog другие вещи, это делает тот Ваш метод XMLHttpRequest из JavaScript, не может выполнить запросы к доменам кроме домена, что Ваш сайт идет.
, Например, Вы не можете выполнить запрос на www.otherexample.com, если Ваш сайт находится на www.example.com. JSONRequest признает, что, но Вы получите результат в формате JSON, если тот сайт признает что (например, это имеет веб-сервис, который возвращает сообщения в JSON). Это - одна проблема, где Вы могли использовать JSON, возможно.
Вот что-то практическое: Yahoo JSON
JSON является Объектная нотация JavaScript. Это - очень компактный способ передать наборы данных через сетевые соединения по сравнению с XML. Я предлагаю, чтобы JSON использовались в любых подобных AJAX приложениях, где XML иначе был бы "рекомендуемой" опцией. Многословие XML добавит ко времени загрузки и увеличенному потреблению пропускной способности ($$$). Можно выполнить тот же эффект с JSON, и его разметка почти исключительно выделена самим данным а не глубинной структуре.
new_car= Car.new
, new_car.skip_method_2= params[:flag].present?
– simha
19.12.2019, 10:34