Перейти к содержимому

Как преобразовать строку в объект javascript

  • автор:

Преобразование типов

Чаще всего операторы и функции автоматически приводят переданные им значения к нужному типу.

Например, alert автоматически преобразует любое значение к строке. Математические операторы преобразуют значения к числам.

Есть также случаи, когда нам нужно явно преобразовать значение в ожидаемый тип.

Пока что мы не говорим об объектах

В этой главе мы не касаемся объектов. Сначала мы разберём преобразование примитивных значений.

Мы разберём преобразование объектов позже, в главе Преобразование объектов в примитивы.

Строковое преобразование

Строковое преобразование происходит, когда требуется представление чего-либо в виде строки.

Например, alert(value) преобразует значение к строке.

Также мы можем использовать функцию String(value) , чтобы преобразовать значение к строке:

let value = true; alert(typeof value); // boolean value = String(value); // теперь value это строка "true" alert(typeof value); // string

Преобразование происходит очевидным образом. false становится «false» , null становится «null» и т.п.

Численное преобразование

Численное преобразование происходит в математических функциях и выражениях.

Например, когда операция деления / применяется не к числу:

alert( "6" / "2" ); // 3, строки преобразуются в числа

Мы можем использовать функцию Number(value) , чтобы явно преобразовать value к числу:

let str = "123"; alert(typeof str); // string let num = Number(str); // становится числом 123 alert(typeof num); // number

Явное преобразование часто применяется, когда мы ожидаем получить число из строкового контекста, например из текстовых полей форм.

Если строка не может быть явно приведена к числу, то результатом преобразования будет NaN . Например:

let age = Number("Любая строка вместо числа"); alert(age); // NaN, преобразование не удалось

Правила численного преобразования:

Значение Преобразуется в…
undefined NaN
null 0
true / false 1 / 0
string Пробельные символы (пробелы, знаки табуляции \t , знаки новой строки \n и т. п.) по краям обрезаются. Далее, если остаётся пустая строка, то получаем 0 , иначе из непустой строки «считывается» число. При ошибке результат NaN .
alert( Number(" 123 ") ); // 123 alert( Number("123z") ); // NaN (ошибка чтения числа на месте символа "z") alert( Number(true) ); // 1 alert( Number(false) ); // 0

Учтите, что null и undefined ведут себя по-разному. Так, null становится нулём, тогда как undefined приводится к NaN .

Большинство математических операторов также производит данное преобразование, как мы увидим в следующей главе.

Логическое преобразование

Логическое преобразование самое простое.

Происходит в логических операциях (позже мы познакомимся с условными проверками и подобными конструкциями), но также может быть выполнено явно с помощью функции Boolean(value) .

  • Значения, которые интуитивно «пустые», вроде 0 , пустой строки, null , undefined и NaN , становятся false .
  • Все остальные значения становятся true .
alert( Boolean(1) ); // true alert( Boolean(0) ); // false alert( Boolean("Привет!") ); // true alert( Boolean("") ); // false

Заметим, что строка с нулём «0» — это true

Некоторые языки (к примеру, PHP) воспринимают строку «0» как false . Но в JavaScript, если строка не пустая, то она всегда true .

alert( Boolean("0") ); // true alert( Boolean(" ") ); // пробел это тоже true (любая непустая строка это true)

Итого

Существует 3 наиболее широко используемых преобразования: строковое, численное и логическое.

Строковое – Происходит, когда нам нужно что-то вывести. Может быть вызвано с помощью String(value) . Для примитивных значений работает очевидным образом.

Численное – Происходит в математических операциях. Может быть вызвано с помощью Number(value) .

Преобразование подчиняется правилам:

Значение Становится…
undefined NaN
null 0
true / false 1 / 0
string Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то получаем 0 , иначе из непустой строки «считывается» число. При ошибке результат NaN .

Логическое – Происходит в логических операциях. Может быть вызвано с помощью Boolean(value) .

Значение Становится…
0 , null , undefined , NaN , «» false
любое другое значение true

Большую часть из этих правил легко понять и запомнить. Особые случаи, в которых часто допускаются ошибки:

  • undefined при численном преобразовании становится NaN , не 0 .
  • «0» и строки из одних пробелов типа » » при логическом преобразовании всегда true .

В этой главе мы не говорили об объектах. Мы вернёмся к ним позже, в главе Преобразование объектов в примитивы, посвящённой только объектам, сразу после того, как узнаем больше про основы JavaScript.

Как преобразовать строку в объект?

Тут нужно сначала переделать строку. Вы могли бы преобразовать её в объект при помощи JSON.parse, но у вас некорректный JSON. Имена переменных нужно брать в кавычки и кроме того у вас тут 3 разных объекта, а не один.

15 июл 2017 в 0:47

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

String.prototype.replaceAll = function(search, replacement) < var target = this; return target.replace(new RegExp(search, 'g'), replacement); >; var str = ",,"; str = str.replaceAll('lat', '"lat"'); str = str.replaceAll('lng', '"lng"'); var a = JSON.parse('<"obj":[' + str + ']>'); console.log(a);

Отслеживать
ответ дан 15 июл 2017 в 2:09
3,324 1 1 золотой знак 10 10 серебряных знаков 21 21 бронзовый знак

var str = ",,"; var a = eval('()'); console.log(a);

Отслеживать
ответ дан 15 июл 2017 в 2:01
3,324 1 1 золотой знак 10 10 серебряных знаков 21 21 бронзовый знак
Вместо eval лучше использовать JSON.stringify
15 июл 2017 в 5:21
@PetrChalov JSON.stringify это функция, обратная eval .
15 июл 2017 в 21:57
16 июл 2017 в 0:19
@PetrChalov конечно
16 июл 2017 в 1:41
Черт возьми, один раз написал и даже в документацию залез, не заметил. Конечно же JSON.parse
16 июл 2017 в 6:32

var str = ",,"; var items = []; var tokens = str.match(/<[^>]+>/g); for (var i = 0; i < tokens.length; i++) < var segments = tokens[i].split(','); var item = <>; for (var j = 0; j < segments.length; j++) < var pair = segments[j].replace(/<|>/, '').split(':'); item[pair[0].trim()] = pair[1]; > items.push(item); > var obj = ; console.log(obj);

Отслеживать
ответ дан 15 июл 2017 в 15:13
Pavel Fateev Pavel Fateev
2,236 2 2 золотых знака 11 11 серебряных знаков 20 20 бронзовых знаков

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

JSON.stringify()

Обычно JSON используется для обмена данными с сервером.

При отправке на сервер данные всегда передаются в виде строки.

Чтобы преобразовать объект JavaScript в строку, используется функция JSON.stringify().

Преобразование объекта JavaScript в строку

Допустим, что у нас есть следующий объект JavaScript:

 var obj = < "name":"John", "age":30, "city":"New York">; 

Воспользуемся JavaScript функцией JSON.stringify() и преобразуем его в строку:

 var myJSON = JSON.stringify(obj); 

В результате у нас будет строка, записанная по правилам JSON.

Теперь myJSON — готовая к отправке на сервер строка:

 var obj = < "name":"John", "age":30, "city":"New York">; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON; 

Преобразование массива JavaScript в строку

Также, мы можем преобразовывать массивы JavaScript в JSON строки.

Допустим, что у нас есть следующий объект JavaScript:

 var arr = [ "John", "Peter", "Sally", "Jane" ]; 

Воспользуемся JavaScript функцией JSON.stringify() и преобразуем его в строку:

 var myJSON = JSON.stringify(arr); 

В результате у нас будет строка, записанная по правилам JSON.

Теперь myJSON — готовая к отправке на сервер строка:

 var arr = [ "John", "Peter", "Sally", "Jane" ]; var myJSON = JSON.stringify(arr); document.getElementById("demo").innerHTML = myJSON; 

Преобразование дат в строку

Объекты даты и времени (тип Date) нельзя использовать в JSON. Функция JSON.stringify() позволяет преобразовать любой объект даты в JSON строку.

 var obj = < "name":"John", "today":new Date(), "city":"New York">; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON; 

При получении данных с сервера вы сможете преобразовать строку в объект даты обратно.

Преобразование функций в строку

Функции нельзя использовать в JSON.

Функция JSON.stringify() удалит любую функцию из объекта JavaScript, и ключ, и значение:

 var obj = < "name":"John", "age":function () , "city":"New York">; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON; 

Этого можно избежать, если преобразовать функцию в строку до того, как использовать функцию JSON.stringify().

 var obj = < "name":"John", "age":function () , "city":"New York">; obj.age = obj.age.toString(); var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON; 

Внимание! Следует избегать использования функций в JSON, так как в этом случае теряется их область видимости, а для обратного преобразования приходится использовать функцию eval(), что нежелательно.

Поддержка браузерами

Функция JSON.stringify() включена во все основные браузеры и в последний стандарт ECMAScript (JavaScript).

Как преобразовать json в объект js

Чтобы преобразовать строку JSON в объект JS, можно воспользоваться методом JSON.parse() .

JSON.parse('<>'); // <> JSON.parse('true'); // true JSON.parse('"foo"'); // "foo" JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] JSON.parse('null'); // null 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *