Как преобразовать 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
Как преобразовать строку в объект?
Тут нужно сначала переделать строку. Вы могли бы преобразовать её в объект при помощи 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 золотых знака 10 10 серебряных знаков 20 20 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Безопасное преобразование строки JSON в объект JavaScript
Работа с данными в формате JSON является неотъемлемой частью программирования на JavaScript. JSON, или JavaScript Object Notation, это формат данных, который используется для хранения и обмена данными. Однако, при работе с JSON, часто возникает вопрос о безопасности преобразования строки JSON в объект JavaScript.
Проблема
Представим, что есть строка JSON, которую нужно преобразовать в объект JavaScript. Один из распространенных подходов — использовать функцию eval() , как показано в приведенном ниже примере:
var jsonString = ''; var obj = eval("(" + jsonString + ')');
Однако, использование eval() может быть опасным, поскольку оно выполнит любой код, содержащийся в строке JSON. Если строка JSON получена из ненадежного источника, это может привести к выполнению вредоносного кода.
Решение
Более безопасным способом преобразования строки JSON в объект JavaScript является использование встроенной функции JSON.parse() . Эта функция принимает строку JSON и преобразует ее в объект JavaScript.
Пример использования JSON.parse() :
var jsonString = ''; var obj = JSON.parse(jsonString);
В отличие от eval() , функция JSON.parse() не будет выполнять любой код, содержащийся в строке. Вместо этого, она просто анализирует строку и возвращает соответствующий объект JavaScript. Это делает ее более безопасной для использования при работе с данными JSON.
Вывод
При работе с JSON в JavaScript важно помнить о безопасности. Хотя использование eval() может быть привлекательным из-за его простоты, оно может привести к серьезным проблемам безопасности. Вместо этого, рекомендуется использовать функцию JSON.parse() , которая предоставляет более безопасный способ преобразования строки JSON в объект JavaScript.
Преобразование строки в объект в JavaScript
В JavaScript, когда пользователь отправляет форму, данные формы собираются в формате String . Для корректной отправки запроса данную строку необходимо преобразовать в объект JSON. Это самый популярный случай, когда необходимо выполнить преобразование строки в объект. Однако существуют и другие.
Рассмотрим наиболее популярные ситуации, где нам может понадобиться преобразование, и варианты их реализации.
JSON.parse()
JSON.parse() — единственная нативная функция JavaScript для преобразования строки в объект. Однако нужно быть внимательным к тому, как она выглядит, чтобы избежать нежелательных результатов.
let user1 = ''; let object1 = JSON.parse(user1); // let user2 = ''; let object2 = JSON.parse(user2); // Ошибка - SyntaxError let user3 = ''; let object3 = JSON.parse(user3); // Ошибка - SyntaxError
eval()
Функция eval() позволяет выполнить код, который передается ей в виде строки. Считается опасной функцией ввиду ее несекьюрности и не рекомендуется к применению. Тем не менее, при грамотном ее использовании, позволяет преобразовать строку в объект и дополнять ее. Чтобы eval() интерпретировал выражение, как объект, необходимо его дополнительно заключить в скобки.
let user1 = ''; let object1 = eval('(' + user1 + ')'); // let user2 = '"name":"Иван","email":"ivan@mail.com"'; let object2 = eval('()'); // let user3 = ''; let object3 = eval('(' + user3 + ')'); // Ошибка - SyntaxError
split()
Этим методом мы можем воспользоваться, когда наша строка не имеет явную структуру объекта. В таком случае мы просто дробим текст на элементы массива, а затем из них циклом создаем ключи объекта и их значения.
let userInfo = 'name,Иван,email,ivan@mail.com'; let userInfoArray = userInfo.split(','); // ['name', 'Иван', 'email', 'ivan@mail.com'] let userInfoObj = <>; for (let i=0; i console.log(userInfoObj); // =>
Подобным образом мы можем преобразовать строку в объект, ключами которого будут все разделенные элементы строки с пустыми значениями:
let userParams = 'name email address phone'; let userParamsArray = userParams.split(' '); // ['name', 'email', 'address', 'phone'] let userParamsObj = <>; for (let i=0; i console.log(userParamsObj); // =>
URLSearchParams()
Случаются ситуации, когда нам необходимо обработать строку запроса и поместить данные в объект. Для этого можно использовать конструктор URLSearchParams() в связке с методом Object.fromEntries() . Примером может любыть любой url-адрес с параметрами:
const url = new URL('https://fruntend.com/posts?direction=desc&sort=likes_count'); const queryString = url.search; // '?direction=desc&sort=likes_count' const obj = new URLSearchParams(queryString); // конструктор возвращает экземпляр объекта console.log(obj.get('direction')); // => desc console.log(obj.get('sort')); // => likes_count const queryObject = Object.fromEntries(obj); console.log(queryObject); // =>
