Протокол json и работа с ним. JavaScript - JSON и методы работы с ним

JSON является частью стандарта ECMAScript начиная с 1999 года, когда ECMA определила функцию eval() воспринимающую формат. Он стал набирать популярность вместе с нарастающим успехом Ajax. Слово JSON часто появляется когда кто-нибудь заводит речь об Ajax. Известно, что JSON является другим форматом данных, что он замещает XML, и что многие программисты активно поддерживают его. Но что такое в действительности JSON и в чем его преимущества?

Почему JSON?

Преимущество JSON заключается в том, что он распознается в JavaScript. Нет необходимости разбирать документ, как это происходит с XML, для передачи данных через интернет.

JSON и XML

Преимущества JSON:

  • Простой для чтения и понимания.
  • Простой для использования.

Преимущества XML:

  • Имеет возможности расширения

И XML и JSON имеют возможность интегрировать большой объем данных в бинарной форме.

Синтаксис JSON

Компоненты JSON:

  • Объекты: содержат объекты или атрибуты.
  • Скалярные переменные: число, строка, логическая переменная.
  • Массив.
  • Литеральные значения: null , true , false , "строка символов ", и числовые значения.

Объект

Содержит элемент или список элементов, где каждый элемент описывается следующим образом:

"имя" : "значение"

Синтаксис объекта:

{ элемент, элемент, .... }

Массив

Набор значений, разделенных запятой.

[ значение, значение, ....]

Значение

Значение может быть: объектом, массивом, литеральным значением (строка, число, true , false , null ).

Для создания JSON файла больше ничего не нужно!

Пример JSON файла

Простой пример структура меню. В данном объекте содержатся атрибуты и массив, который включает другие объекты строки меню.

{ "menu": "Файл", "commands": [ { "title": "Новый", "action":"CreateDoc" }, { "title": "Открыть", "action": "OpenDoc" }, { "title": "Закрыть", "action": "CloseDoc" } ] } Эквивалент на XML:

Файл Новый</value> <action>CreateDoc</action> </item> <item> <title>Открыть</value> <action>OpenDoc</action> </item> <item> <title>Закрыть</value> <action>CloseDoc</action> </item> </commands> </root> </p><h3><span>Как использовать формат </span></h3> <p>Файл JSON позволяет загружать данные с сервера или на сервер. Например, сохранение содержимого формы, которая была только что заполнена пользователем. Процесс включает три фазы: обработку браузером, обработку сервером, и обмен данными между ними. </p> <h4><span>Клиентская часть (браузер) </span></h4> <p>Данная часть выполняется достаточно просто, так как JSON является частью определения JavaScript. Содержимое файла или определяющих данных назначается переменным и они становятся объектами программы. </p> <h4>Серверная часть </h4> <p>Файл JSON используется различными программными языками, включая PHP и Java , благодаря наличию парсеров, которые позволяют получать содержимое и даже конвертировать его в классы и атрибуты языка. На сайте JSON можно найти парсеры для многих языков программирования. </p> <h4>Обмен данными </h4> <ul><li><span>с использованием XMLHttpRequest. </span></li> </ul><p>Файл JSON обрабатывается <a href="/windows-7-xp/naiti-vse-vhozhdeniya-podstroki-v-stroku-javascript-javascript-rabota-so/">функцией JavaScript</a> <i>eval() </i>. Отправка файла на сервер может быть выполнена с помощью XMLHttpRequest . Файл отправляется как текстовый и обрабатывается парсером языка программирования, который используется на сервере. </p> <h3>Пример </h3> <p>Код XMLHttpRequest: </p><p>Var req = new XMLHttpRequest(); req.open("GET", "file.json", true); req.onreadystatechange = myCode; // обработчик req.send(null); </p><p>Обработчик JavaScript: </p><p>Function myCode() { if (req.readyState == 4) { var doc = eval("(" + req.responseText + ")"); } } Использование данных: var menuName = document.getElementById("jsmenu"); // ищем поле menuName.value = doc.menu.value; // назначаем значение полю Как получать данные: doc.commands.title // читаем значение поля "title" в массиве doc.commands.action // читаем значение поля "action" в массиве</p> <p>JSON (<a href="/tips/javascript-object-sozdanie-obektov-i-rabota-fundamentalnye-obekty-javascript-upd/">JavaScript Object</a> Notation) – это формат передачи данных. Из названия видно, что формат основан на языке <a href="/program/obektno-orientirovannoe-programmirovanie-javascript-obekty-vse-pro/">программирования JavaScript</a>, однако он доступен и в других языках (Python, Ruby, PHP, Java).</p> <p>JSON использует расширение.json. При использовании его в других <a href="/windows-8/kakoi-standartnyi-format-fleshki-kakaya-failovaya-sistema-luchshe-exfat-ili/">файловых форматах</a> (например, .html) строка JSON берётся в кавычки или присваивается переменной. Этот формат легко передаётся между веб-сервером и клиентом или браузером.</p> <p>Легковесный и простой для восприятия JSON – отличная альтернатива XML.</p> <p>Данное руководство ознакомит вас с преимуществами, объектами, общей структурой и синтаксисом JSON.</p> <h2>Синтаксис и структура JSON</h2> <p>Объект JSON имеет вид «ключ-значение» и обычно записывается в фигурных скобках. При работе с JSON все объекты хранятся в файле.json, но также они могут существовать как отдельные объекты в контексте программы.</p> <p>Объект JSON выглядит так:</p> <p>"first_name" : "John",<br> "last_name" : "Smith",<br> "location" : "London",<br> "online" : true,<br> "followers" : 987</p> <p>Это очень простой пример. Объект JSON может содержать множество строк.</p> <p>Как видите, объект состоит из пар «ключ-значение», которые заключены в фигурные скобки. Большая часть данных в JSON записывается в виде объектов.</p> <p>Между ключом и значением ставится двоеточие. После каждой пары нужно поставить запятую. В результате получается:</p> <p>"key" : "value", "key" : "value", "key": "value"</p> <p>Ключ в JSON находится слева. Ключ нужно помещать в двойные кавычки. В качестве ключа можно использовать любую валидную строку. В рамках одного объекта все ключи должны быть уникальны. Ключ может содержать пробел («first name»), но при программировании могут возникнуть проблемы с доступом к такому ключу. Потому вместо пробела лучше использовать подчеркивание («first_name»).</p> <p>Значения JSON находятся в правой части столбца. В качестве значения можно использовать любой простой тип данных:</p> <ul><li>Строки</li> <li>Числа</li> <li>Объекты</li> <li>Массивы</li> <li>Логические данные (true или false)</li> </ul><p>Значения могут быть представлены и сложными типами данных (например, объектами или массивами JSON).</p> <p>JSON поддерживает индивидуальный синтаксис каждого из перечисленных выше типов данных: если значение представлено строкой, то оно будет взято в кавычки, а если числом, то нет.</p> <p>Как правило, данные в файлах.json записываются в столбик, однако JSON можно записать и в строку:</p> <p>{ "first_name" : "John", "last_name": "Smith", "online" : true, }</p> <p>Так обычно записываются данные JSON в файлы другого типа.</p> <p>Записывая данные JSON в столбец, вы повышаете удобочитаемость файла (особенно если данных в файле много). JSON игнорирует пробелы между столбцами, потому с их помощью вы можете разделить данные на удобное для восприятия количество столбцов.</p> <p>"first_name" : "John",<br> "last_name" : "Smith",<br> "online" : true</p> <p>Обратите внимание: объекты JSON очень похожи на объекты JavaScript, но это не один и тот же формат. К примеру, в JavaScript можно использовать функции, а в JSON нельзя.</p> <p>Главным преимуществом JSON является то, что данные в этом формате поддерживают многие популярные языки программирования, потому их можно быстро передать.</p> <p>Теперь вы знакомы с базовым синтаксисом JSON. Но файлы JSON могут иметь сложную, иерархическую структуру, включающую в себя вложенные массивы и объекты.</p> <h2>Сложные типы в JSON</h2> <p>JSON может хранить вложенные объекты и массивы, которые будут передаваться в качестве значения присвоенного им ключа.</p> <h3>Вложенные объекты</h3> <p>Ниже вы найдёте пример – файл users.json, в котором содержатся данные о пользователях. Для каждого пользователя</p> <p>(«john», «jesse», «drew», «jamie») в качестве значения передаётся вложенный объект, который, в свою очередь, тоже состоит из ключей и значений.</p> <p><b>Примечание </b>: Первый вложенный объект JSON выделен красным.</p> <p>" john" : { <br> "username" : " John", <br> "location" : "London", <br> "online" : true, <br> "followers" : 987 </p> <p>"jesse" : {<br> "username" : "Jesse",<br> "location" : "Washington",<br> "online" : false,<br> "followers" : 432</p> <p>"drew" : {<br> "username" : "Drew",<br> "location" : "Paris",<br> "online" : false,<br> "followers" : 321</p> <p>"jamie" : {<br> "username" : "Jamie",<br> "location" : "Berlin",<br> "online" : true,<br> "followers" : 654</p> <p>Обратите внимание: фигурные скобки используются и во вложенном, и в основном объекте. Запятые во вложенных объектах используются так же, как и в обычных.</p> <h3>Вложенные массивы</h3> <p>Данные можно вкладывать в JSON с помощью <a href="/windows-10/tri-sekreta-massivov-v-javascript-o-kotoryh-vy-mogli-ne-znat-dobavlenie/">массивов JavaScript</a>, которые будут передаваться как значения. В JavaScript в начале и в конце массива используются квадратные скобки (). Массив – это упорядоченный набор данных, который может содержать данные <a href="/windows-8/chto-takoe-pekarni-vpn-razlichnye-tipy-vpn-i-ih-ispolzovanie-kak/">различных типов</a>.</p> <p>Массив используют для передачи <a href="/gadgets/kak-skryt-bolshoe-kolichestvo-druzei-vk-kak-skryt-druzei-v/">большого количества</a> данных, которые можно сгруппировать. Для примера попробуем записать данные о пользователе.</p> <p>{<br> "first_name" : "John",<br> "last_name" : "Smith",<br> "location" : "London",<br> "websites" : [ </p> <p> "description" : "work",<br> "URL" : "https://www.johnsmithsite.com/" </p> <p> },<br> { </p> <p> "desciption" : "tutorials",<br> "URL" : "https://www.johnsmithsite.com/tutorials" </p> <p>"social_media" : [</p> <p>"description" : "twitter",<br> "link" : "https://twitter.com/johnsmith"</p> <p>"description" : "facebook",<br> "link" : "https://www.facebook.com/johnsmith"</p> <p>"description" : "github",<br> "link" : "https://github.com/johnsmith"</p> <p>Ключам «websites» и «social_media» в качестве значений присвоены массивы, которые помещаются в квадратные скобки.</p> <p>При помощи вложенных массивов и объектов можно создать сложную иерархию данных.</p> <h2>JSON или XML?</h2> <p>XML (eXtensible Markup Language) позволяет хранить данные в удобном для восприятия человека и машины виде. Формат XML поддерживается большим количеством языков программирования.</p> <p>У XML и JSON очень много общего. Однако XML требует гораздо <a href="/internet/mobile-translator-on-line-mobile-translator-of-large-texts-online/">больше текста</a>, следовательно, такие файлы объёмнее и их сложнее читать и писать. Более того, XML обрабатывается только с помощью интерпретатора XML, а JSON можно обработать с помощью простой функции. В отличие от JSON, XML не может хранить массивы.</p> <p>Давайте сравним два файла: они содержат одинаковые данные, но первый написан в формате XML, а второй в JSON.</p> <p><b> users.xml </b></p> <p><username> John</username> <location>London</location></p> <p><username>Jesse</username> <location>Washington</location></p> <p><username>Drew</username> <location>Paris</location></p> <p><username>Jamie</username> <location>Berlin</location></p> <p><b>users.json </b><br> {"users": [</p> <p>{"username" : "John", "location" : "London"},<br> {"username" : "Jesse", "location" : "Washington"},<br> {"username" : "Drew", "location" : "Paris"},<br> {"username" : "JamieMantisShrimp", "location" : "Berlin"}</p> <p>JSON – очень компактный формат, и он не требует такого количества тегов, как XML. Кроме того, XML, в отличие от JSON, не поддерживает массивы.</p> <p>Если вы знакомы с HTML, вы заметили, что <a href="/tips/skachat-universalnyi-obmen-dannymi-v-formate-xml-universalnyi-obmen-dannymi-v-formate-xml/">формат XML</a> очень похож на него (в частности тегами). JSON проще, требует меньше текста и его проще использовать, например, в приложениях AJAX.</p> <p>Конечно, формат нужно выбирать в зависимости от потребностей приложения.</p> <h2>Инструменты для JSON</h2> <p>JSON обычно используется в JavaScript, однако этот формат широко применяется в других языках программирования.</p> <p>Больше информации о совместимости и обработке JSON можно найти на сайте проекта и в библиотеке jQuery .</p> <p>Писать JSON с нуля приходится редко. Обычно данные загружаются из исходников или преобразовываются в JSON. Вы можете преобразовать CSV или данные с разделителями табуляцией в JSON с помощью <a href="/program/chrome-instrumenty-razrabotchika-kak-vklyuchit-prihorashivanie-minimizirovannyh-ishodnikov-kak-otkryt/">открытого инструмента</a> Mr. Data Converter . Чтобы преобразовать XML в JSON и наоборот, используйте utilities-online.info . При работе с автоматическими инструментами обязательно проверяйте результат.</p> <p>Файлы JSON (в том числе и преобразованные данные) можно проверить с помощью сервиса JSONLint . Чтобы протестировать JSON в контексте веб-разработки, обратитесь к JSFiddle .</p> <h2>Заключение</h2> <p>JSON – простой и легковесный формат данных. Файлы JSON легко передавать, хранить и использовать.</p> <p>Сегодня JSON часто используется в API.</p> <p>Переменные, массивы и объекты - привычная и удобная форма представления данных. Описывать данные принято в языке <a href="/windows-7-xp/vkontakte-prosit-javascript-brauzer-vklyuchit-na-telefone-otladka-javascript-na/">браузера JavaScript</a>, что делать не обязательно в языке <a href="/tv/neogranichennyi-downloads-php-ws-server-upravlenie-processom-php-iz/">сервера PHP</a>. Формат JSON позволяет обобщить их в одно целое и не делать акцент на языке программирования. При этом данные превращаются в пары: "имя = значение". Значение в каждой из них также может быть совокупностью таких пар.</p><p>Принято JSON ассоциировать с фигурными скобками и Последнее вполне обосновано, так как формат JSON = Object Notation JavaScript. В последние особенно динамичные годы многое изменилось. Что создавалось ради <a href="/windows-10/kto-takie-bloggery-i-zachem-oni-nuzhny-konkretnye-celi-deyatelnosti-i-regulyarnost-nuzhno-li-special/">конкретной цели</a>, часто приносило неожиданные плоды или открывало новые горизонты.</p><h2>Обмен данными: браузер - сервер</h2><p>Технология AJAX стала традиционной, обычное обновление страницы <i>целиком </i> перестало пользоваться популярностью. Посетитель, открывая сайт, инициирует серию частичных обменов данными, когда те или иные страницы меняются только в том месте, которое актуально.</p><p><img src='https://i1.wp.com/fb.ru/misc/i/gallery/11007/1746095.jpg' width="100%" loading=lazy></p><p>Считается, что появление JSON связано с использованием именно AJAX, но на самом деле ассоциативные и его объектная нотация (особенности синтаксиса описания и использования объектов) имеют гораздо более родственное отношение к JSON, чем обмен данными между браузером и сервером.</p><p>Так как контент страниц современных сайтов действительно стал «массивным» (объемным), то и эффективность формата для обмена данными приобрела особое значение. Нельзя сказать, что JSON стал новым представлением данных, но то что он давно был элементом синтаксиса JavaScript, имеет существенное значение.</p><p><img src='https://i1.wp.com/fb.ru/misc/i/gallery/41493/1745503.jpg' width="100%" loading=lazy></p><p>Использование кириллицы в именовании переменных - очень неожиданное явление (нонсенс), но это работает в последних <a href="/different/chrome-skachat-polnuyu-versiyu-skachat-google-chrome-gugl-hrom-russkaya-versiya/">версиях Chrome</a>, Firefox и, даже, в <a href="/dll-files/poslednyaya-versiya-brauzer-internet-explorer-ustanovka-internet-explorer/">Internet Explorer</a> 11.</p><h2>Кириллица и JSON</h2><p>Разумеется, использовать это совершенно неожиданное явление не стоит, припоминая, как легко значения переменных, записанные русскими буквами, превращаются в кракозябры: что тут говорить про имена, особенно внешние.</p><p>Сомнительно, что инициативу в кириллических именах поддержит внешнее окружение браузера, с которым ему постоянно приходится иметь дело. Но этот факт заслуживает внимания по той простой причине, что JSON формат - это возможность писать имена и значения так, как угодно разработчику. Это принципиально, поскольку в каждой задаче описание области применения так, как она этого требует, существенно упрощает отладку и уменьшает количество ошибок.</p><p>Не важно, какое именно имело под собой основание синтаксическое новшество - JSON, важно, что оно дало законное право и реальную возможность поставить соответствие: "любое имя = любое значение".</p><p><img src='https://i0.wp.com/fb.ru/misc/i/gallery/41493/1745979.jpg' width="100%" loading=lazy></p><p>Надо отдать должное языку JavaScript: то, что предусмотрено синтаксисом, не обязывает разработчика и ничего ему не навязывает. Разработчик свободно использует синтаксис языка для оптимального формирования модели данных и алгоритма их использования.</p><h2>PHP и JSON</h2><p>Принимая данные в формате JSON, сервер (посредством PHP, в частности) предоставляет возможность их обрабатывать как есть и возвращать обратно в браузер результат в аналогичном формате. Исходный массив PHP:</p><ul><li><i>$cJSON = array ("a"=> "alfa", "b"=> "beta", "g"=> "gamma"). </i></li> </ul><p>Преобразование в формат JSON для передачи в браузер:</p><ul><li><i>$cJS = json_encode($cJSON </i><i>). </i></li> </ul><p>Результат:</p><ul><li><i>{"a":"alfa","b":"beta","g":"gamma"}. </i></li> </ul><p>Допускается изображенная на фото вложенность.</p><p><img src='https://i2.wp.com/fb.ru/misc/i/gallery/41493/1745580.jpg' width="100%" loading=lazy></p><p>Здесь сформированный массив был добавлен новым элементом «сам в себя» с автоматическим индексом "0", а затем еще раз с указанным индексом "z".</p><p>Json_decode() выполняет преобразование строки JSON в массив PHP. Аналогичных результатов можно добиться, манипулируя функциями и explode(). В некоторых случаях этот вариант предпочтительнее.</p><h2>Уровень вложенности</h2><p>Элементы могут быть вложены друг в друга как на стороне браузера, так и на стороне сервера. На практике формат JSON (описание стандарта RFC 4627) предоставляет значительно более 4 уровней вложенности, но не следует злоупотреблять этой возможностью.</p><p>Лучше всего никогда не выходить за пределы разумной достаточности, это делает код читабельным, упрощает его отладку и понимание другими разработчиками.</p><p>JSON принято относить к конструкциям данных, которые <a href="/different/kak-sozdat-xml-fail-iz-excel-formirovanie-faila-xml-prostaya-vygruzka-dlya/">проще XML</a>, понятны одновременно и людям, и компьютерам. Это действительно так, когда объем данных мал, а уровень вложенности разработчик выбрал грамотно. Во всех остальных случаях считать количество скобок и понимать сложно как на стороне браузера, так и на стороне сервера.</p><h2>Файлы JSON</h2><p>Применение JSON на практике часто не ограничивается доступной восприятию короткой строкой. Любые конструкции данных всегда носят прагматичный характер. При этом JSON может эффективно применяться как в реальных данных задачи (штат предприятия), так и для реализации временных данных (кэш объекта).</p><h2>Штат предприятия и JSON-формат: пример</h2><p>Обычно запись об одном человеке - это фамилия, имя, отчество, год рождения, специальность, образование, ... и несколько еще простеньких значений. Даже в особо требовательных компаниях запись об одном человеке не будет превышать десятка-двух полей. Это доступно восприятию и может быть помещено в строку базы данных.</p><p>Если в компании работает несколько человек - это одно, но если десятки тысяч - это совсем другое. Можно продолжать использовать базу данных, но хранение ее в виде файла выглядит практичнее и доступнее для использования.</p><p><img src='https://i0.wp.com/fb.ru/misc/i/gallery/41493/1745988.jpg' width="100%" loading=lazy></p><p>JSON - это обычный <a href="/configuring-wi-fi/gde-nahoditsya-bloknot-v-windows-10-gde-nahoditsya-bloknot/">текстовый файл</a>. Случай со штатным расписанием, куда ни шло. Прочитать его всегда можно. Открыть и изменить также доступно в любом <a href="/tv/kakie-programmy-nazyvayutsya-tekstovymi-redaktorami-tekstovye-redaktory-dlya/">текстовом редакторе</a>, который не имеет привычки добавлять свою служебную информацию в содержание файла. Вообще, *.json - это чистый текст как внутри браузера, так и внутри файла - строка.</p><p>На фото представлен кэш объекта, формирующего картинку, пример.</p><p><img src='https://i0.wp.com/fb.ru/misc/i/gallery/41493/1745623.jpg' width="100%" loading=lazy></p><p>Это пример содержания файла, сформированного сайтом, предоставляющим услугу цветной объемной печати на кружках и керамических изделиях. Естественно, решить, имея такой JSON-формат, чем открыть его, действительно проблематично. Однако в этом и подобных случаях проблем с чтением файла не возникает: PHP читает файл, разбирает его и передает в браузер. Изменённые посетителем данные возвращаются на сервер и записываются обратно.</p><p><img src='https://i2.wp.com/fb.ru/misc/i/gallery/41493/1745994.jpg' width="100%" loading=lazy></p><p>В таком варианте использования файл выступает как переменная, которая хранится вне кода. При необходимости, переменная получает значение из файла, а если она будет изменена посетителем в диалоге, предусмотренном сайтом, то все изменения запишутся как есть. Нет необходимости читать и проверять содержимое файла.</p><p>JSON часто используется для хранения и использования служебной информации - это не штатное расписание, его не обязательно видеть ни разработчику, ни посетителю сайта.</p><h2>XML и JSON</h2><p>"Всему свое время" - классическое знание, принятое за аксиому еще до появления программирования. "Ни что не появляется просто так", - это тоже было до того, как человек написал первую вразумительную программу на искусственном языке.</p><p><img src='https://i2.wp.com/fb.ru/misc/i/gallery/41493/1745996.jpg' height="260" width="260" loading=lazy></p><p>Форматы данных появляются от реальной потребности и основываются на достигнутых знаниях. У HTML - своя стезя, у XML - своя дорога, а JSON - это объектная логика JavaScript, расширенная на другие языки. Сравнивать одно с другим не лучшее занятие. Каждому свое.</p><p>XML чудесно справляется со своими задачами и уходить в историю явно не собирается. А JSON использовался и до 2006 года, просто не каждый разработчик считал своим долгом декларировать те или иные варианты представления своих данных.</p><p>Имелись случаи в практике, когда на бэйсике были написаны программы, не использующие JSON как таковой, но прекрасно хранящие пары "имя = значение" и предоставляющие их в распоряжение нужным алгоритмам в нужное время.</p><h2>Спецсимволы («`», «~», «|», ...) и форматы данных</h2><p>Привычка работать с ассоциативными массивами и объектами на JavaScript делает использование JSON естественным и удобным. Это действительно отличный формат, но умение разделять и соединять, манипулируя строками и массивами, имеет куда более глубинные корни.</p><p><img src='https://i0.wp.com/fb.ru/misc/i/gallery/41493/1745721.jpg' width="100%" loading=lazy></p><p>Функции join/split <a href="/tv/vvedenie-v-javascript-chem-otlichaetsya-java-ot-javascript-yava-skript-yazyk-programmirovaniya/">языка JavaScript</a> и implode/explode <a href="/gadgets/izuchaem-php-i-mysql-pravilno-yazyk-programmirovaniya-php-dlya-nachinayushchih/">языка PHP</a> позволяют удобно и эффективно использовать как форматы <a href="/dll-files/imya-faila-pravil-1s-8-2-obrabotka-universalnyi-obmen-dannymi-v-formate-xml/">данных XML</a>, JSON, так и собственный вариант. Последний часто оптимальнее, а первые два идеально подходят для вариантов общего пользования. Если идет передача информации другому разработчику, серверу, в файл или в базу данных, лучше XML и JSON не найти. С ними все работают, потому передача/прием информации не нуждается в комментариях.</p><h2>Использование JSON в Android</h2><p>Чтение и запись данных в формате JSON в Android - не только норма вещей, но и множество объектов, ориентированных на работу именно с таким форматом данных.</p><p><img src='https://i2.wp.com/fb.ru/misc/i/gallery/41493/1746008.jpg' width="100%" loading=lazy></p><p>При этом используется именно формат JSON. Возможно, это так и есть, но вопрос не в феноменальности соцсетей, а в том что действительно представление информации в формате "имя = значение" удобно как для программирования, так и для использования. В отличие от строгого и закомплексованного «XML» это действительно человеко-удобный формат.</p><h2>Ассоциативные массивы</h2><p>Сложилось так, что переменные надлежит описывать (JavaScript) или хотя бы указывать начальное значение (PHP). В обоих случаях переменная может изменить свой тип очень легко. При необходимости язык выполняет это преобразование автоматически.</p><p><img src='https://i1.wp.com/fb.ru/misc/i/gallery/41493/1746015.jpg' height="208" width="228" loading=lazy></p><p>Но почему бы переменной не менять также свое имя, не появляться в ходе выполнения алгоритма и не исчезать, когда необходимость в ней отпадет? <a href="/windows-10/kak-sozdat-associativnyi-massiv-v-javascript-vse-sposoby-perebora-massiva-v-javascript/">Ассоциативные массивы</a> позволяют решить эту проблему, но тогда при использовании таких относительно динамичных переменных, имя массива и соответствующие синтаксические конструкции будут следовать в места их применения.</p><p>Особенно это обстоятельство ярко выражено на PHP, но с этим можно мириться, как, впрочем, с символом «$» в имени переменной и комбинацией «$this->» внутри объекта. Программируя одновременно на JavaScript и PHP, поначалу действительно диву даешься, как все отличается, но потом все становится таким привычным и естественным...</p><h2>Ассоциативный массив -> JSON</h2><p>В этом примере посредством библиотеки PHPOffice/PHPWord создается документ *.docx, и массив aProperties содержит свойства этого документа (автор, компания, заголовок, категория, дата создания...).</p><p><img src='https://i0.wp.com/fb.ru/misc/i/gallery/41493/1746017.jpg' width="100%" loading=lazy></p><p>Второй массив содержит данные по странице:</p><ul><li>ориентация (альбомная или обычная);</li><li>размеры по вертикали и горизонтали;</li><li>отступы (поля слева, сверху, снизу, справа);</li><li>колонтитулы.</li> </ul><p><img src='https://i0.wp.com/fb.ru/misc/i/gallery/41493/1745869.jpg' height="361" width="358" loading=lazy></p><p>Формирование документа выполняется на сервере, где установлена библиотека PHPOffice/PHPWord. На сайте предусмотрено управление значениями этих массивов посредством JavaScript. Результат в формате JSON возвращается обратно на сервер и используется в алгоритмах на PHP, в его конструкциях, то есть в массивах.</p><h2>Динамичные переменные</h2><p>Формат JSON решает проблему динамичных переменных. Здесь можно создавать, изменять и удалять переменные без лишних синтаксических нагромождений. Это красиво смотрится и используется в JavaScript.</p><p><img src='https://i0.wp.com/fb.ru/misc/i/gallery/41493/1745842.jpg' width="100%" loading=lazy></p><p>В этом примере функция GetOjInfo () выбирает имя значения и значение из объекта. Изначально объект JSON-строки, присвоенной переменной ojInfo, располагает тремя элементами: Name, age и work. Чуть позже добавляется переменная Status.</p><p><img src='https://i0.wp.com/fb.ru/misc/i/gallery/41493/1745850.jpg' width="100%" loading=lazy></p><p>После первого оператора <a href="/windows-10/komandnaya-stroka-delete-otklyuchaem-komandnuyu-stroku-v-windows/">delete строка</a> ojInfo теряет элемент age, после второго delete - элемент work. Если предположить, что данная строка есть подборка переменных, имеющих определенный смысл, то посредством JSON можно реально создавать, изменять и удалять любые их наборы вне операционного поля (синтаксиса) описания и обработки языка JavaScript.</p><p>Формат JSON на такой вариант не был рассчитан, но такое возможно, практично и удобно.</p> <p><i>Урок, в котором рассматривается, что такое JSON и какие он имеет преимущества по сравнению с другими форматами данных. </i></p> <h2>Понятие JSON</h2> <p>JSON (JavaScript Object Notation) - это <a href="/windows-8/kak-chitat-faily-docx-chem-otkryt-tekstovyi-format-doc-i-docx-na-androide/">текстовый формат</a> представления данных в нотации объекта JavaScript.</p> <p>Это означает то, что данные в JSON организованы, так же как и в объекте JavaScript. Но в отличие от последнего формат записи JSON имеет некоторые особенности, которые будут рассмотрены немного позже.</p> <p>Применяется JSON обычно в связки с AJAX для того, чтобы сервер мог передать данные в удобной форме сценарию JavaScript, который затем уже отобразит их на странице.</p> <h2>Структура формата JSON</h2> <p>Кто знаком с процессом создания объектов в JavaScript, не увидит ни чего нового в структуре формата JSON. Это связано с тем, что структура JSON соответствует структуре объекта JavaScript с некоторыми ограничениями.</p> <p>Более просто представить себе JSON можно как контейнер, состоящий из элементов. Каждый элемент в таком контейнере - это некоторая структурная единица, состоящая из ключа и значения.</p> <p><img src='https://i0.wp.com/itchief.ru/assets/images/tickets/2015.12/javascript-structure-json.png' align="center" width="100%" loading=lazy></p> <p>При этом значение напрямую связано с ключом и образуют так называемую пару ключ-значение. Для того чтобы получить значение в таком объекте, необходимо знать его ключ. Синтаксически такие данные в JSON записываются следующим образом:</p> <p><img src='https://i2.wp.com/itchief.ru/assets/images/tickets/2015.12/javascript-json-syntax-data.png' align="center" width="100%" loading=lazy></p> <p>В вышеприведенной записи видно, что ключ отделяется от значения с помощью знака двоеточия (:). При этом ключ в объекте JSON обязательно должен быть заключен в двойные кавычки. Это первая особенность JSON, которая его отличает от объекта JavaScript . Т.к. в объекте <a href="/configuring-wi-fi/javascript-massiv-s-klyuchom-tri-sekreta-massivov-v-javascript-o-kotoryh-vy-mogli-ne/">JavaScript ключ</a> (свойство объекта) не обязательно должен быть заключён в двойные кавычки.</p> <p><i> </i> Например, структура объекта, которая является валидной с точки зрения JavaScript и не валидной с точки зрения JSON:</p><p>Var person = { name: "Иван"; } // <a href="/gadgets/obekty-v-javascript-sozdanie-obektov-javascript-rabota-s-obektami-v-javascript--/">объект JavaScript</a> </p><p>Предупреждение: имя ключу старайтесь задавать так чтобы не усложнить доступ к данным, т.е. при составлении имени предпочтительно придерживаться верблюжьей нотации или использовать для соединения слов знак нижнего подчёркивания ("_").</p> <p>Значение ключа в JSON может быть записано в одном из следующих форматов: string (строкой), number (числом), object (объектом), array (массивом), boolean (логическим значением true или false), null (специальным значением JavaScript).</p> <p>Это <b>второе ограничение в JSON, т.к. объект JavaScript может содержать любой тип данных, включая функцию </b>.</p><p>Var person = { "name" : "Иван"; "setName": function() { console.log(this.name); } } // объект JavaScript </p><p>Для отделения одного элемента (пары ключ-значение) от другого используется знак запятая (,).</p> <p>Например, рассмотрим JSON, состоящий из различных типов данных.</p> <p><img src='https://i1.wp.com/itchief.ru/assets/images/tickets/2015.12/javascript-json-types-data.png' align="center" height="682" width="543" loading=lazy></p> <p> <i> </i> Внимание: формат представления данных JSON не допускает использование внутри своей структуры комментариев.</p> <h2>Работа с JSON в JavaScript</h2> <p>В отличие от объекта JavaScript JSON представляет собой строку.</p> <p>Например:</p><p> // например переменная personData, содержит строку, которая представляет из себя JSON var personData = "{"name":"Иван","age":37,"mother":{"name":"Ольга","age":58},"children":["Маша","Игорь","Таня"],"married": true,"dog": null}"; </p><p>Работа с JSON обычно ведётся в двух направлениях:</p> <ol><li>Парсинг - это перевод строки, содержащей JSON, в объект JavaScript.</li> <li>Конвертирование объекта JavaScript в строку JSON. Другими словами, это действие выполняет преобразование обратное парсингу.</li> </ol><h3>Парсинг JSON</h3> <p>Парсинг JSON, т.е. перевод строки JSON в объект JavaScript, осуществляется с помощью метода eval() или parse() .</p> <p>Использование метода eval():</p><p> // переменная person - это объект JavaScript, который получен путём выполнения кода (строки) JSON var person= eval("("+personData+")"); </p> <p>Использование метода JSON.parse():</p><p> // переменная person - это объект JavaScript, который получен путём парсинга строки JSON var person = JSON.parse(personData); </p><h3>Конвертирование объекта JavaScript в строку JSON</h3> <p>Перевод объекта JavaScript в строку JSON осуществляется с помощью метода JSON.stringify() . <a href="/internet/html-formy-metody-otpravki-dannyh-na-server-s-pomoshchyu-formy/">Данный метод</a> осуществляет действие обратное методу JSON.parse() .</p><p>Var personString = JSON.strigify(person); </p><h2>Преимущества формата JSON</h2> <p>Формат представления данных JSON имеет следующие преимущества:</p> <ul><li>удобные и быстрые в работе методы, предназначенные для конвертации (парсинга) строки JSON в объект JavaScript и обратно;</li> <li>понятная и простая структура данных;</li> <li>очень <a href="/windows-7-xp/kak-sdelat-fail-pomenshe-razmerom-vyvody-o-szhatii-jpg-failov-umenshenie-vesa/">маленький размер</a> по сравнению с другими форматами данных (например XML). Это связано с тем, что формат JSON содержит минимальное возможное форматирование, т.е. при его написании используется всего несколько специальных знаков. Это очень важное преимущество, т.к. данные представленные в формате JSON будут быстрее загружаться, чем, если бы они были бы представлены в других форматах.</li> </ul><p>Из-за того что <a href="/gadgets/iz-1s-7-7-v-formate-xml-podhody-k-zagruzke-dannyh-v-xml-format/">данный формат</a> имеет очень много преимуществ он стал применяться не только в JavaScript, но и во многих других языках, таких как C, Ruby, Perl, Python, PHP и т.д.</p> <h3>Сравнение форматов JSON и XML</h3><p>Формат JSON имеет следующие преимущества перед форматом XML:</p> <ol><li>При передаче некоторых данных размер JSON будет значительно меньше, чем размер XML.</li> <li>JSON имеет более удобные методы конвертации в структуры <a href="/dll-files/otpravka-json-php-otpravit-dannye-json-s-javascript-na-php/">данных JavaScript</a>, чем XML.</li> <li>JSON более просто создавать, чем XML.</li> </ol><p><img src='https://i2.wp.com/itchief.ru/assets/images/tickets/2015.12/json-vs-xml.png' align="center" width="100%" loading=lazy></p> <p>Работа с данными JSON после парсинга осуществляется как с объектом JavaScript.</p><p> //JSON var personData = "{"name":"Иван","age":37,"mother":{"name":"Ольга","age":58},"children":["Маша","Игорь","Таня"],"married": true,"dog": null}"; //Объект JavaScript person var person = JSON.parse(personData); </p><p>Рассмотрим основные моменты:</p><p> //получить значения ключа (свойства) name person.name; person["name"]; //получить значения ключа (свойства) name, находящегося в объекте mother person.mother.name; //удалить элемент age delete(person.age) //добавить (или обновить) ключ (свойство) person.eye = "карие"; //при работе с массивами необходимо использовать методы, предназначенные для работы именно с массивами //удалить 1 элементиз массива (метод splice) person.children.splice(1,1) //добавить элемент в массив (метод push) person.children.push("Катя"); </p><p><img src='https://i0.wp.com/itchief.ru/assets/images/tickets/2015.12/javascript-woks-with-json-after-parsing.png' align="center" width="100%" loading=lazy></p> <p>Для перебора элементов в объекте можно использовать цикл for..in:</p><p>For (key in person) { if (person.hasOwnProperty(key)) { //ключ = key //значение = person console.log("Ключ = " + key); console.log("Значение = " + person); } // если объект person имеет key (если у person есть свойство key) } // перерабрать все ключи (свойства) в объекте </p><p><img src='https://i2.wp.com/itchief.ru/assets/images/tickets/2015.12/javascript-for-in-object.png' align="center" height="173" width="371" loading=lazy></p> <p>Для перебора элементов массива можно использовать следующий цикл:</p><p>For (var i=0; i </p><p><img src='https://i0.wp.com/itchief.ru/assets/images/tickets/2015.12/javascript-for-in-array.png' align="center" height="115" width="253" loading=lazy></p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> </div> <div class="clear"></div> </div> </article> <div class="clear"></div> </div> <aside id="sidebar"> <div class="theiaStickySidebar"> <div class="widget-top"> <h4></h4> <div class="stripe-line"></div> </div> <div class="search-block-large widget"> <form method="get" action="/"> <button class="search-button" type="submit" value="Поиск"><i class="fa fa-search"></i></button> <input type="text" id="s" name="s" value="Поиск" onfocus="if (this.value == 'Поиск') { this.value = '';} " onblur="if (this.value == '') { this.value = 'Поиск';} " /> </form> </div> <div id="text-html-widget-22" class="text-html-box" style="text-align:center;"> </div> <div id="text-html-widget-21" class="text-html-box" style="text-align:center;"> <div id="rotaban_252588" class="rbrocks rotaban_9d0893f37def4380b5f6cdcfa4127be7"></div> </div> <div class="widget" id="tabbed-widget"> <div class="widget-container"> <div class="widget-top"> <ul class="tabs posts-taps"> <li class="tabs"><a href="#tab2">Новые</a></li> <li class="tabs"><a href="#tab1">Популярные</a></li> <li class="tabs"><a href="#tab3">Обсуждаемые</a></li> </ul> </div> <div id="tab2" class="tabs-wrap"> <ul> <li> <div class="post-thumbnail"> <a href="/dll-files/planshety-samsung-samsung-galaxy-tab-otzyvy-o-planshete-instrukcii-obzor-samsung-galaxy/" rel="bookmark"><img width="110" height="75" src="/uploads/f29af3e328c0da364af82d035a63a386.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Samsung Galaxy Tab: отзывы о планшете, инструкции" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/dll-files/planshety-samsung-samsung-galaxy-tab-otzyvy-o-planshete-instrukcii-obzor-samsung-galaxy/">Samsung Galaxy Tab: отзывы о планшете, инструкции</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-05-24 15:44:08</span> </li> <li> <div class="post-thumbnail"> <a href="/dll-files/lg-q6-obzor-nedorogoi-kopii-flagmana-sravnenie-s-g6-stoit-li-pokupat-pochemu/" rel="bookmark"><img width="110" height="75" src="/uploads/0dda273240dc28ab18f4289a646a5e06.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="LG Q6 — обзор недорогой копии флагмана, сравнение с G6" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/dll-files/lg-q6-obzor-nedorogoi-kopii-flagmana-sravnenie-s-g6-stoit-li-pokupat-pochemu/">LG Q6 — обзор недорогой копии флагмана, сравнение с G6</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-05-11 21:19:58</span> </li> <li> <div class="post-thumbnail"> <a href="/configuring-wi-fi/kak-sdelat-filtr-v-excel-po-stolbcam-rasshirennyi-filtr-v-ms/" rel="bookmark"><img width="110" height="75" src="/uploads/d7d16366242c88e175e23e590b7a5fff.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Расширенный фильтр в MS EXCEL" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/configuring-wi-fi/kak-sdelat-filtr-v-excel-po-stolbcam-rasshirennyi-filtr-v-ms/">Расширенный фильтр в MS EXCEL</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-04-03 03:04:02</span> </li> <li> <div class="post-thumbnail"> <a href="/different/kak-sdelat-filtr-v-excel-po-stolbcam-kak-v-excel-sdelat-filtr-na-kazhdyi/" rel="bookmark"><img width="110" height="75" src="/uploads/e8e86c7d58ebdcb8eab5f12dc011c88d.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Как в excel сделать фильтр на каждый столбец?" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/different/kak-sdelat-filtr-v-excel-po-stolbcam-kak-v-excel-sdelat-filtr-na-kazhdyi/">Как в excel сделать фильтр на каждый столбец?</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-04-03 03:04:02</span> </li> <li> <div class="post-thumbnail"> <a href="/windows-7-xp/kak-sdelat-normalnuyu-tablicu-v-vorde-izmenenie-vneshnego-vida/" rel="bookmark"><img width="110" height="75" src="/uploads/4375c46e8ba611fceefcad512e7f0c05.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Как сделать нормальную таблицу в ворде" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/windows-7-xp/kak-sdelat-normalnuyu-tablicu-v-vorde-izmenenie-vneshnego-vida/">Как сделать нормальную таблицу в ворде</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-04-03 03:04:02</span> </li> </ul> </div> <div id="tab1" class="tabs-wrap"> <ul> <li> <div class="post-thumbnail"> <a href="/tv/sozdat-glavnuyu-knopochnuyu-formu-pozvolyayushchuyu-otkryt-iz-nee-po-nazhatiyu-na/" title="Изменение элементов в кнопочной форме" rel="bookmark"><img width="110" height="75" src="/uploads/908da9dbda5f53d757768cd4a1733d07.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Изменение элементов в кнопочной форме" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/tv/sozdat-glavnuyu-knopochnuyu-formu-pozvolyayushchuyu-otkryt-iz-nee-po-nazhatiyu-na/">Изменение элементов в кнопочной форме</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-04-03 03:04:02</span> <span class="post-views-widget"> </span> </li> <li> <div class="post-thumbnail"> <a href="/windows-10/ispolnenie-ciklicheskih-algoritmov-na-baze-sistemy-kumir/" title="Исполнение циклических алгоритмов на базе системы "кумир"" rel="bookmark"><img width="110" height="75" src="/uploads/c35d8e0e24b932fcdc704e03a059b2ab.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Исполнение циклических алгоритмов на базе системы "кумир"" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/windows-10/ispolnenie-ciklicheskih-algoritmov-na-baze-sistemy-kumir/">Исполнение циклических алгоритмов на базе системы "кумир"</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-03-18 19:34:43</span> <span class="post-views-widget"> </span> </li> <li> <div class="post-thumbnail"> <a href="/program/ispolnitel-robot-prostye-komandy-cikly-i-usloviya-v-yazyke/" title="Исполнитель Робот. Простые команды. Циклы и условия в языке кумир Решение кумира в циклах" rel="bookmark"><img width="110" height="75" src="/uploads/a2076f48121ce4c15cf18f1bdb75dd7a.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Исполнитель Робот. Простые команды. Циклы и условия в языке кумир Решение кумира в циклах" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/program/ispolnitel-robot-prostye-komandy-cikly-i-usloviya-v-yazyke/">Исполнитель Робот. Простые команды. Циклы и условия в языке кумир Решение кумира в циклах</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-03-18 19:34:43</span> <span class="post-views-widget"> </span> </li> <li> <div class="post-thumbnail"> <a href="/windows-7-xp/cikly-s-usloviem-v-kumire-vetvlenie-v-yazyke-kumir-kumir-prostye-i/" title="Ветвление в языке кумир Кумир простые и составные условия" rel="bookmark"><img width="110" height="75" src="/uploads/483767e216279de0c95a497a1853e9f9.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Ветвление в языке кумир Кумир простые и составные условия" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/windows-7-xp/cikly-s-usloviem-v-kumire-vetvlenie-v-yazyke-kumir-kumir-prostye-i/">Ветвление в языке кумир Кумир простые и составные условия</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-03-18 19:34:43</span> <span class="post-views-widget"> </span> </li> <li> <div class="post-thumbnail"> <a href="/windows-10/raspechatat-deleniya-ot-1-do-10-delenie-video-zolotaya-arifmetika/" title="Распечатать деления от 1 до 10" rel="bookmark"><img width="110" height="75" src="/uploads/8b3da587c8054658296956355bea3a52.jpg" class="attachment-tie-small size-tie-small wp-post-image" alt="Распечатать деления от 1 до 10" / loading=lazy><span class="fa overlay-icon"></span></a> </div> <h3><a href="/windows-10/raspechatat-deleniya-ot-1-do-10-delenie-video-zolotaya-arifmetika/">Распечатать деления от 1 до 10</a></h3> <span class="tie-date"><i class="fa fa-clock-o"></i>2023-03-18 19:34:43</span> <span class="post-views-widget"> </span> </li> </ul> </div> <div id="tab3" class="tabs-wrap"> <ul> <li> <div class="post-thumbnail" style="width:55px"> <img alt='Что лучше продавать через Инстаграм?' src='/uploads/a5e3f9793d62cd83899c30c290371103.jpg' class='avatar avatar-55 photo' height='55' width='55' / loading=lazy> </div> <a href="/program/kakie-tovary-otlichno-prodayutsya-cherez-instagram-prinosya/"> Что лучше продавать через Инстаграм? </a> </li> <li> <div class="post-thumbnail" style="width:55px"> <img alt='Маркетинг на страже экологии: примеры удачного партнерства брендов ради спасения окружающего мира' src='/uploads/5da7b5416b0c04007713b53197c9236c.jpg' class='avatar avatar-55 photo' height='55' width='55' / loading=lazy> </div> <a href="/tips/marketing-na-strazhe-ekologii-primery-udachnogo-partnerstva-brendov-radi/"> Маркетинг на страже экологии: примеры удачного партнерства брендов ради спасения окружающего мира </a> </li> <li> <div class="post-thumbnail" style="width:55px"> <img alt='Высококонтрастные темы оформления Windows' src='/uploads/c382b30421c5cf16bbad9d5312e961db.jpg' class='avatar avatar-55 photo' height='55' width='55' / loading=lazy> </div> <a href="/different/kak-otklyuchit-kontrastnyi-rezhim-v-windows-7-vysokokontrastnye-temy-oformleniya/"> Высококонтрастные темы оформления Windows </a> </li> <li> <div class="post-thumbnail" style="width:55px"> <img alt='Узнать какой порт usb 3.0. Как узнать, какой USB? USB и его версии' src='/uploads/9fdd1103e4a7335197228b8e2c527542.jpg' class='avatar avatar-55 photo' height='55' width='55' / loading=lazy> </div> <a href="/different/uznat-kakoi-port-usb-3-0-kak-uznat-kakoi-usb-usb-i-ego-versii/"> Узнать какой порт usb 3.0. Как узнать, какой USB? USB и его версии </a> </li> <li> <div class="post-thumbnail" style="width:55px"> <img alt='Несколько вариантов выключения компьютера под управлением Windows8 Как полностью выключить windows 8' src='/uploads/604da02db788c6365d223426da4224a8.jpg' class='avatar avatar-55 photo' height='55' width='55' / loading=lazy> </div> <a href="/dll-files/kak-nastroit-vyklyuchenie-kompyutera-neskolko-variantov-vyklyucheniya/"> Несколько вариантов выключения компьютера под управлением Windows8 Как полностью выключить windows 8 </a> </li> </ul> </div> </div> </div> <div id="ai_widget-5" class="widget ai_widget"> <div class='code-block code-block-14' style='margin: 8px auto; text-align: center; clear: both;'> <div style="text-align:center;"> <div id="quvosa1" style="height:500px;width:300px;" align="center"></div> </div> </div> </div> </div> </div> </aside> <div class="clear"></div> </div> <div class="clear"></div> <div class="footer-bottom"> <div class="container"> <div class="alignleft"> © Copyright 2024, pcwe.ru - Портал о персональных компьютерах. </div> <div class="clear"></div> </div> </div> </div> </div> </div> <div id="topcontrol" class="fa fa-angle-up" title="Пролистать наверх"></div> <div id="fb-root"></div> <div class="essb_links essb_counters essb_counter_modern_bottom essb_displayed_sidebar essb_share essb_template_default-retina essb_112975927 essb_button_animation13 print-no" id="essb_displayed_sidebar_112975927" data-essb-postid="2015" data-essb-position="sidebar" data-essb-button-style="button" data-essb-template="default-retina" data-essb-counter-pos="bottom" data-essb-url="/" data-essb-twitter-url="/" data-essb-instance="112975927"> </div> <div align="center"> </div> <link rel='stylesheet' id='wp-subscribe-css' href='/wp-content/plugins/wp-subscribe-pro/assets/css/wp-subscribe-form.css' type='text/css' media='all' /> <script type='text/javascript' src='https://pcwe.ru/wp-content/plugins/contact-form-7/includes/js/scripts.js'></script> <script type='text/javascript' src='https://pcwe.ru/wp-content/plugins/rating-form/assets/js/front.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll": "0", "visibility_show": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c", "visibility_hide": "\u0421\u043a\u0440\u044b\u0442\u044c", "width": "Auto" }; /* ]]> */ </script> <script type='text/javascript' src='https://pcwe.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://pcwe.ru/wp-content/plugins/wp-polls/polls-js.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var tie = { "mobile_menu_active": "true", "mobile_menu_top": "true", "lightbox_all": "", "lightbox_gallery": "", "woocommerce_lightbox": "", "lightbox_skin": "dark", "lightbox_thumb": "vertical", "lightbox_arrows": "true", "sticky_sidebar": "1", "is_singular": "1", "SmothScroll": "true", "reading_indicator": "true", "lang_no_results": "\u041d\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432", "lang_results_found": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430" }; /* ]]> */ </script> <script type='text/javascript' src='https://pcwe.ru/wp-content/themes/sahifa/js/tie-scripts.js'></script> <script type='text/javascript' src='https://pcwe.ru/wp-content/themes/sahifa/js/ilightbox.packed.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript' src='https://pcwe.ru/wp-content/themes/sahifa/js/search.js'></script> <script type='text/javascript' src='https://pcwe.ru/wp-content/plugins/wp-subscribe-pro/assets/js/wp-subscribe-form.js'></script> <div class="dgd_overlay"></div> <link rel="stylesheet" id="essb-cct-style" href="/assets/styles1.css" type="text/css" media="all" /> </body> </html>