Пишу серверо-клиентское приложение, запросы/ответы идут в JSON (люблю с ним работать ) , для парсинга ответа использую библиотеку Newtonsoft.Json так вот, например ответ сервера:
{
"status": true,
"location": "https://ru.wargaming.net/id/openid/?openid.assoc_handle=%7BHMAC-SHA1%7D%7B53c3b656%7D%7BdbdXfQ%3D%3D%7D&openid.ax.if_available=ext0%2Cext1%2Cext2&openid.ax.mode=fetch_request&openid.ax.type.ext0=http%3A%2F%2Faxschema.openid.wargaming.net%2Fspa%2Fid&openid.ax.type.ext1=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffriendly&openid.ax.type.ext2=http%3A%2F%2Faxschema.openid.wargaming.net%2Fidentity%2Fsso%2Fnotifications%2Fdisable&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.realm=https%3A%2F%2Fapi.worldoftanks.ru%2F&openid.return_to=https%3A%2F%2Fapi.worldoftanks.ru%2Fid%2Fcomplete%2F%3Fredirect_uri%3Dhttps%253A%252F%252Fapi.worldoftanks.ru%252Fwot%252Fblank%252F%26application_id%3D0775c3d2e437b4d3a2e386036571e297%26expires_at%3D1407221921%26janrain_nonce%3D2014-07-22T06%253A58%253A41ZepFnu1"}d/openid/?openid.assoc_handle=%7BHMAC-SHA1%7D%7B53c3b656%7D%7BdbdXfQ%3D%3D%7D&openid.ax.if_available=ext0%2Cext1%2Cext2&openid.ax.mode=fetch_request&openid.ax.type.ext0=http%3A%2F%2Faxschema.openid.wargaming.net%2Fspa%2Fid&openid.ax.type.ext1=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffriendly&openid.ax.type.ext2=http%3A%2F%2Faxschema.openid.wargaming.net%2Fidentity%2Fsso%2Fnotifications%2Fdisable&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.realm=https%3A%2F%2Fapi.worldoftanks.ru%2F&openid.return_to=https%3A%2F%2Fapi.worldoftanks.ru%2Fid%2Fcomplete%2F%3Fredirect_uri%3Dhttps%253A%252F%252Fapi.worldoftanks.ru%252Fwot%252Fblank%252F%26application_id%3D0775c3d2e437b4d3a2e386036571e297%26expires_at%3D1407221921%26janrain_nonce%3D2014-07-22T06%253A58%253A41ZepFnu1"}d/openid/?openid.assoc_handle=%7BHMAC-SHA1%7D%7B53c3b656%7D%7BdbdXfQ%3D%3D%7D&openid.ax.if_available=ext0%2Cext1%2Cext2&openid.ax.mode=fetch_request&openid.ax.type.ext0=http%3A%2F%2Faxschema.openid.wargaming.net%2Fspa%2Fid&openid.ax.type.ext1=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffriendly&openid.ax.type.ext2=http%3A%2F%2Faxschema.openid.wargaming.net%2Fidentity%2Fsso%2Fnotifications%2Fdisable&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.realm=https%3A%2F%2Fapi.worldoftanks.ru%2F&openid.return_to=https%3A%2F%2Fapi.worldoftanks.ru%2Fid%2Fcomplete%2F%3Fredirect_uri%3Dhttps%253A%252F%252Fapi.worldoftanks.ru%252Fwot%252Fblank%252F%26application_id%3D0775c3d2e437b4d3a2e386036571e297%26expires_at%3D1407221921%2"
}
Для удобства чтения отформатировал.
Так вот, при парсинге JObject’ом (функция JObject.Parse(json)) у меня вылетает исключение:
Необработанное исключение типа "Newtonsoft.Json.JsonReaderException" произошло в Newtonsoft.Json.dll
Дополнительные сведения: Additional text encountered after finished reading JSON content: . Path '', line 1, position 1175.
Причем такое происходит в любых ответах сервера (содержимое которых сильно отличается), изменяется только позиция и «<какой-то символ>.Path».
В чем проблема? Я уже всячески обрабатывал строку как на сервере так и на клиенте, толку 0.
Причем странность: Ту-же строку (прямо из клиента выводом перед парсингом брал) например Notepad++ с плагином JSON Viewer спокойно парсит.
P.s. И да, на сервере JSON строка собирается тем-же JObject’ом.
UPD. Я покопался дебаггером, и обнаружил:
Откуда ответ забивается «»?
15.02.2018, 11:49. Показов 3781. Ответов 6
Здравствуйте уважаемые форумчане. Столкнулся с проблемой, которую решить пока не могу.
На сайте большинство получение данных происходит через ajax.
Так вот, самое интересное, что у большинства людей работает все нормально, но есть некоторые у которых json.parse() выдает ошибку. Причем этот человек может с одного компьютера сидеть и все работает нормально, а с другого у него ошибку выдает.
И так. Пример…
Получаю список оценок за комментарии:
Javascript | ||
|
Далее php начинает обработку и формирование json
PHP | ||
|
И теперь пытаемся принять объект
Javascript | ||
|
Так вот… В большинстве случаев все и у всех работает нормально, но вот есть люди, у которых вылетает «Обработка JSON — не удалось распарсить»
Я пробовал к одному такому подключаться удаленно и смотрел что происходит в браузере.
А ничего необычного! Вот пример того что получаю я, у меня все работает (копировал из браузера из дебага на вкладке responce):
JSON | ||
|
И вот что у того человека:
JSON | ||
|
У него выдает ошибку json.
Но дама, на компьютере он говорит что все работает как надо. В браузере ctrl+f5 не помогает. Думал может файлы старые из кэша работают и мешают выполнению, но не помогает…
Всю голову сломал, помогите советом, что может быть?
Добавлено через 6 минут
Ах да… Нужно показать как json формируется
PHP | ||
|
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Corpus name: OpenSubtitles2018. License: not specified. References: http://opus.nlpl.eu/OpenSubtitles2018.php, http://stp.lingfil.uu.se/~joerg/paper/opensubs2016.pdf
Сообщение
SyntaxError: JSON.parse: unterminated string literal SyntaxError: JSON.parse: bad control character in string literal SyntaxError: JSON.parse: bad character in string literal SyntaxError: JSON.parse: bad Unicode escape SyntaxError: JSON.parse: bad escape character SyntaxError: JSON.parse: unterminated string SyntaxError: JSON.parse: no number after minus sign SyntaxError: JSON.parse: unexpected non-digit SyntaxError: JSON.parse: missing digits after decimal point SyntaxError: JSON.parse: unterminated fractional number SyntaxError: JSON.parse: missing digits after exponent indicator SyntaxError: JSON.parse: missing digits after exponent sign SyntaxError: JSON.parse: exponent part is missing a number SyntaxError: JSON.parse: unexpected end of data SyntaxError: JSON.parse: unexpected keyword SyntaxError: JSON.parse: unexpected character SyntaxError: JSON.parse: end of data while reading object contents SyntaxError: JSON.parse: expected property name or '}' SyntaxError: JSON.parse: end of data when ',' or ']' was expected SyntaxError: JSON.parse: expected ',' or ']' after array element SyntaxError: JSON.parse: end of data when property name was expected SyntaxError: JSON.parse: expected double-quoted property name SyntaxError: JSON.parse: end of data after property name when ':' was expected SyntaxError: JSON.parse: expected ':' after property name in object SyntaxError: JSON.parse: end of data after property value in object SyntaxError: JSON.parse: expected ',' or '}' after property value in object SyntaxError: JSON.parse: expected ',' or '}' after property-value pair in object literal SyntaxError: JSON.parse: property names must be double-quoted strings SyntaxError: JSON.parse: expected property name or '}' SyntaxError: JSON.parse: unexpected character SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
Тип ошибки
Что пошло не так?
JSON.parse()
обрабатывает (парсит) строку в формате JSON. Это строка должна соответствовать формату, иначе будет выведена ошибка, что был нарушен синтаксис.
Examples
JSON.parse()
не допускает запятые
Метод JSON.parse() не разрешает использование, так называемых, trailling запятых.
Обе строки выдадут ошибку типа SyntaxError:
JSON.parse('[1, 2, 3, 4,]');
JSON.parse('{"foo": 1,}');
// SyntaxError JSON.parse: unexpected character
// at line 1 column 14 of the JSON data
Необходимо убрать последние запятые в строках и тогда ошибки не будет:
JSON.parse('[1, 2, 3, 4]');
JSON.parse('{"foo": 1}');
Названия свойств должны быть в двойных кавычках
Вы не можете использовать одинарные кавычки в именах свойств. Например, ‘foo’.
JSON.parse("{'foo': 1}");
// SyntaxError: JSON.parse: expected property name or '}'
// at line 1 column 2 of the JSON data
Вместо этого необходимо написать «foo»:
JSON.parse('{"foo": 1}');
Незначащие нули или плавающая точка без последующей цифры
Вы не можете использовать незначащие нули, например, 01. Плавающая точка должна всегда сопровождаться хотя бы одной цифрой после неё.
JSON.parse('{"foo": 01}');
// SyntaxError: JSON.parse: expected ',' or '}' after property value
// in object at line 1 column 2 of the JSON data
JSON.parse('{"foo": 1.}');
// SyntaxError: JSON.parse: unterminated fractional number
// at line 1 column 2 of the JSON data
Вместо этого напишите просто 1 без нуля и используйте хотя бы одну цифру после точки:
JSON.parse('{"foo": 1}');
JSON.parse('{"foo": 1.0}');
Смотрите также
-
26.08.2015, 06:46
#1
Junior Member
JSON Parse Error. Func: «pricelist.edit»
Добрый день!
Проблема с использованием Billmanager последней бета-версии.
При редактировании тарифных планов или типов продуктов, в момент сохранения и передачи изменений на сервер всплывает ошибка
JSON Parse Error. Func: «pricelist.edit»
Методом тыка, выявили что ошибка возникает только при обращении к панели billmgr через url с символом «-» ( в доменном имени ).
Если заходить по IP-адресу или другому доменному имени без символа «-» то всё сохраняет без ошибок.
Используем порт https вместо 1500.
-
26.08.2015, 12:35
#2
BILLmanager team
Добрый день!
К сожалению на тестовых машинах не воспроизвелось описанное Вами поведение.
Вероятно проблема воспроизводится при дополнительных параметрах. Не могли бы вы уточнить, какой язык используется, на всех ли тарифах такое поведение, или на каком то одном типе тарифов, либо продуктов. Также может иметь значение непосредственно изменяемый параметр.
-
26.08.2015, 18:33
#3
Junior Member
Сообщение от t.sidorenko
Добрый день!
Не могли бы вы уточнить, какой язык используется, на всех ли тарифах такое поведение, или на каком то одном типе тарифов, либо продуктов. Также может иметь значение непосредственно изменяемый параметр.Решил проблему, она была как-то связана с добавленным мной для своего типа продукта /usr/local/mgr5/etc/xslt/itemname_exampletype.xsl
После его удаления и очистки кеша проблема исчезла.
Не думал что в этом причина , так как же без «-» проблема не вылезала.
Спасибо!
-
30.08.2015, 19:49
#4
Junior Member
Уточненные данные по проблеме.
При прошлом тестировании не совсем гладко были протестированы варианты.
Похоже, что указанная выше ошибка случается при использовании CloudFlare в качестве фронтенда, напрямую взаимодействующего с ihttpd на 443 порту.Сейчас поймал эту ошибку,при попытке снять галочку в таблице «сотрудники»
после прописывания hostname панели в файл hosts ( в обход cloudflare ) проблема исчезает, после возвращения трафика на clourfire появляется.Могли бы вы дать рекомендации по устранению этой проблемы?
( кроме вариантов воткнуть промежуточный nginx )
-
02.09.2015, 15:43
#5
Junior Member
-
02.09.2015, 16:36
#6
ISPsystem team
Посмотрите, что там в ответ на это запрос приходит. В разработчике хрома например http://commandlinefanatic.com/cgi-bi…article=art034
-
28.05.2016, 18:53
#7
Senior Member
Столкнулся с той же проблемой, только через не в ценах, а при сохранении изменений «Редактирование информации о сотруднике»
Выдает ошибку JSON Parse Error. Func: «employee.edit»
Chrome console выдаетjsonParseError app-desktop.min.js?v=5.56.0-2016.05.05_12:52&r=:106
Основной порт BillManager — 1400
Захожу через https://dom.exmp.ru
Если заходить через https://dom.exmp.ru:1400 то проблемы нет
-
30.05.2016, 09:40
#8
ISPsystem team
Во вкладке Network посмотрите этот запрос, что там прилетает в ответе.
-
30.05.2016, 15:48
#9
Senior Member
В какой именно вкладке?
Headers, Preview, Response?Последний раз редактировалось Gloome; 30.05.2016 в 18:03.
-
31.05.2016, 07:57
#10
ISPsystem team
Урок, в котором рассматривается, что такое JSON и какие он имеет преимущества по сравнению с другими форматами данных.
JSON (JavaScript Object Notation) – это текстовый формат представления данных в нотации объекта JavaScript. Предназначен JSON, также как и некоторые другие форматы такие как XML и YAML, для обмена данными.
Несмотря на своё название, JSON можно использовать не только в JavaScript, но и в любом другом языке программирования.
JSON по сравнению с другими форматами также обладает достаточно весомым преимуществом. Он в отличие от них является более компактным, а это очень важно при обмене данными в сети Интернет. Кроме этого, JSON более прост в использовании, его намного проще читать и писать.
При веб-разработке JSON очень часто применяется в качестве формата для передачи информации от веб-сервера клиенту (веб-браузеру) при AJAX запросе.
Как выглядит этот процесс? Его можно представить в виде двух шагов. На первом шаге, сервер, по запросу пришедшему ему от клиента, сначала формирует некоторый набор данных в удобном формате, который затем можно было бы очень просто упаковать в строку JSON. Завершается работа на сервере отправкой JSON данных в качестве результата клиенту. На втором шаге, клиент получает в качестве ответа от сервера строку JSON и распаковывает её, т.е. переводит в JavaScript объект. После этого на клиенте выполняются дальнейшие с ними действия, например, выводятся на страницу.
Это один из примеров использования формата JSON. Но его применение не ограничивается только этим сценарием, их очень много и не только в веб.
В JSON, в отличие от XML и YAML, данные организованы также как в объекте JavaScript. Но JSON – это не объект, а строка. При этом не любой объект JavaScript может быть переведён один к одному в JSON. Например, если у объекта есть методы, то они при преобразовании в строку JSON будут проигнорированы и не включены в неё.
Структура формата JSON
Структура строки JSON практически ничем не отличается от записи JavaScript объекта.
Она состоит из набора пар ключ-значения. В этой паре ключ отделяется от значения с помощью знака двоеточия (:
), а одна пара от другой — с помощью запятой (,
). При этом ключ в JSON, в отличие от объекта обязательно должен быть заключен в двойные кавычки. Это первое отличие JSON от JavaScript объекта. В объекте ключ (имя свойства) не обязательно следует заключать в двойные кавычки.
Например:
// строка JSON var jsonPerson = '{"name":"Иван","age":25}'; // объект JavaScript var person = { name: "Иван", age: 25 };
Чтобы не усложнять доступ к данным, при задании ключам имён лучше придерживаться тех же правил, что и при именовании переменных.
Второе отличие заключается в том, что значение ключа в JSON можно задать только в одном из следующих форматов: string
(строкой), number
(числом), object
(объектом), array
(массивом), boolean
(логическим значением true
или false
) или null
(специальным значением JavaScript). Например, значение ключа в JSON не может быть функцией или датой (объектом типа Date
).
// объект JavaScript var person = { name: "Иван", birthDay: new Date(Date.UTC(1985, 03, 05)), getAge: function () { var ageDate = new Date(Date.now() - this.birthDay.getTime()); return Math.abs(ageDate.getUTCFullYear() - 1970); } }; // строка JSON var jsonPerson = '{"name":"Иван","birthDay":"1985-04-05T00:00:00.000Z"}';
Пример JSON строки, состоящей из различных типов данных:
{ "name": "Иван", "age": 37, "mother": { "name": "Ольга", "age": 58 }, "children": [ "Маша", "Игорь", "Таня" ], "married": true, "dog": null }
В ней ключ «name» имеет в качестве значения строку, «age» — число, «mother» — объект, состоящий из «name» и «age», «children» — массив, «married» — логический тип, «dog» — null
.
При этом стоит обратить внимание на то, что JSON не допускает использование внутри своей структуры комментариев.
Работа с JSON в JavaScript
Как было уже отмечено выше, JSON – это строка.
// переменная personData, содержит в качестве значения строку в формате JSON var personData = '{"name":"Иван","age":37,"mother":{"name":"Ольга","age":58},"children":["Маша","Игорь","Таня"],"married": true,"dog":null}';
Работа с JSON в JavaScript обычно осуществляется в двух направлениях:
- перевод строки JSON в объект (данный процесс ещё называют парсингом);
- конвертирование объекта в строку JSON (другими словами действие обратное парсингу).
Парсинг JSON
Парсинг JSON (перевод строки JSON в объект JavaScript) осуществляется с помощью метода eval
или parse
.
Пример использования eval
для парсинга JSON:
var person = eval('('+personData+')');
Метод eval
не рекомендуется использовать так как он не безопасен. Так если кто-то сможет добавить скрипт в строку JSON, то он выполнится.
В JavaScript для парсинга строки в JSON рекомендуется использовать метод JSON.parse
. Он такой уязвимости не имеет.
Использование метода JSON.parse
:
// переменная person - это объект JavaScript, который получен путём парсинга строки JSON var person = JSON.parse(personData);
Конвертирование объекта JavaScript в строку JSON
Перевод объекта JavaScript в строку JSON осуществляется с помощью метода JSON.stringify
. Данный метод осуществляет действие обратное методу JSON.parse
.
var personString = JSON.strigify(person);
Преимущества формата JSON
Формат представления данных JSON имеет следующие преимущества:
- удобные и быстрые в работе методы, предназначенные для конвертации (парсинга) строки JSON в объект JavaScript и обратно;
- понятная и простая структура данных;
- очень маленький размер по сравнению с другими форматами данных (например XML). Это связано с тем, что формат JSON содержит минимальное возможное форматирование, т.е. при его написании используется всего несколько специальных знаков. Это очень важное преимущество, т.к. данные представленные в формате JSON будут быстрее загружаться, чем, если бы они были бы представлены в других форматах.
Из-за того что данный формат имеет очень много преимуществ он стал применяться не только в JavaScript, но и во многих других языках, таких как C, Ruby, Perl, Python, PHP и т.д.
Сравнение форматов JSON и XML
Формат JSON имеет следующие преимущества перед форматом XML:
- При передаче некоторых данных размер JSON будет значительно меньше, чем размер XML.
- JSON имеет более удобные методы конвертации в структуры данных JavaScript, чем XML.
- JSON более просто создавать, чем XML.
Работа с данными JSON после парсинга
Работа с данными JSON после парсинга осуществляется как с объектом JavaScript.
//JSON var personData = '{"name":"Иван","age":37,"mother":{"name":"Ольга","age":58},"children":["Маша","Игорь","Таня"],"married": true,"dog": null}'; //Объект JavaScript person var person = JSON.parse(personData);
Рассмотрим основные моменты:
//получить значения ключа (свойства) 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("Катя");
Для перебора элементов в объекте можно использовать цикл for..in
:
for (key in person) { if (person.hasOwnProperty(key)) { //ключ = key //значение = person[key] console.log("Ключ = " + key); console.log("Значение = " + person[key]); } // если объект person имеет key (если у person есть свойство key) } // перерабрать все ключи (свойства) в объекте
Для перебора элементов массива можно использовать следующий цикл:
for (var i=0; i<=person.children.length-1; i++) { // if (person.children[i].hasOwnProperty(key)) { //i = индекс //значение = person.children[i] console.log("Элемент [ "+ i +" ] = " + person.children[i]); // }