Как я могу преобразовать объект JavaScript в строку?
Пример:
var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)
Вывод:
Object {a = 1, b = 2} // очень хороший читаемый вывод :)
Item: [object Object] // не знаю, что внутри :(
javascript
string
object
serialization
tostring
user680174
источник
источник
console.log("Item", obj);
. Не нужно ничего сложного.Ответы:
Я бы порекомендовал использовать
JSON.stringify
, который преобразует набор переменных в объекте в строку JSON. Большинство современных браузеров изначально поддерживают этот метод, но для тех, которые этого не делают, вы можете включить версию JS :источник
foo: function () {...}
.JSON.stringify(obj, null, 2);
для более красивого вывода.Используйте функцию String () javascript
или stringify ()
источник
JSON.stringify(yourobject)
горничная моего дня!Конечно, чтобы преобразовать объект в строку, вы должны либо использовать свой собственный метод, такой как:
На самом деле, вышесказанное просто показывает общий подход; вы можете использовать что-то вроде http://phpjs.org/functions/var_export:578 или http://phpjs.org/functions/var_dump:604
или, если вы не используете методы (функции как свойства вашего объекта), вы можете использовать новый стандарт (но не реализованный в старых браузерах, хотя вы также можете найти для него утилиту), JSON .stringify (). Но опять же, это не сработает, если объект использует функции или другие свойства, которые не сериализуются в JSON.
источник
Проще говоря
console
, вы можете просто использовать запятую вместо+
.+
Попытается преобразовать объект в строку, а запятая будет отображаться отдельно в консоли.Пример:
Вывод:
Ссылка: https://developer.mozilla.org/en-US/docs/Web/API/Console.log
источник
console.log(o)
? Поскольку, если вы попытаетесь зарегистрировать объект, добавленный в строку, он фактически вызываетtoString()
объект.console.log
в конечном итоге вызывает то, что называетсяPrinter
спецификацией: «Как реализация печатает аргументы, зависит от реализации» - это означает, что каждый браузер может делать это по- своему (см. console.spec.whatwg.org/#printer ). Firefox будет отображать объекты в виде строки, но красиво окрашены. Chrome отобразит объект в виде интерактивной группы, которую можно развернуть, чтобы увидеть свойства. Попробуйте!console.log('Item: ', o);
по-прежнемуItem: [object Object]
.console.log
вы можете использоватьconsole.dir(o)
для печати объект javascript вместо того, чтобы печатать его в виде строки. В инструментах разработчика это позволяет открыть объект и проверить все свойства, даже массивы. (см .: developer.mozilla.org/de/docs/Web/API/Console/dir )РЕДАКТИРОВАТЬ Не используйте этот ответ, так как он не работает в Internet Explorer. Используйте раствор Гэри Чамберса .
toSource () - это функция, которую вы ищете, которая запишет ее как JSON.
источник
toSource()
в IE не работает.toSource()
не является общепризнанным стандартом, поэтому нельзя гарантировать его поддержку во всех браузерах.Один вариант :
console.log('Item: ' + JSON.stringify(o));
Другой вариант (как указано в комментариях к soktinpk ) и лучше для отладки консоли IMO:
console.log('Item: ', o);
источник
Ни одно из решений здесь не сработало для меня. Кажется, JSON.stringify - это то, что говорят многие люди, но он отключает функции и выглядит довольно неработоспособным для некоторых объектов и массивов, которые я пробовал при тестировании.
Я сделал свое собственное решение, которое работает как минимум в Chrome. Размещая его здесь, вы сможете найти его в Google.
РЕДАКТИРОВАТЬ: Я знаю, что этот код может быть улучшен, но просто не удосужился сделать это. Пользователь andrey предложил улучшение здесь с комментарием:
Используйте это на свой страх и риск, так как я не проверял это вообще. Не стесняйтесь предлагать любые дополнительные улучшения в качестве комментария.
источник
,
в конце каждого объекта / массива есть трейлинг .Если вы просто выводите на консоль, вы можете использовать
console.log('string:', obj)
. Обратите внимание на запятую .источник
console.log
часто отображается после того, как AJAX заканчивает параллельное снабжение массива данными, что приводит к неверным результатам. В таких случаях клонирование или сериализация объектов - это путь: поскольку мы регистрировали дублированный объект, даже когда AJAX заканчивает свою работу, он заполняет «старые» данные.В тех случаях, когда вы знаете, что объект представляет собой просто логическое значение, дату, строку, число и т. Д. Функция javascript String () работает просто отлично. Недавно я нашел это полезным при работе со значениями из функции $ .each в jquery.
Например, следующий код преобразует все элементы в значении в строку:
Подробнее здесь:
http://www.w3schools.com/jsref/jsref_string.asp
источник
var my_string = ''+value+'';
источник
Я искал это и написал глубоко рекурсивный с отступом:
Применение :
objToString({ a: 1, b: { c: "test" } })
источник
if(ndeep > MAX_DEPTH_LEVEL){ return '...'; }
в функцию, где MAX_DEPTH_LEVEL - это выбранное вами максимальное количество слоев объектов, которые нужно копать.Если вы просто хотите увидеть объект для отладки, вы можете использовать
источник
1.
2.
источник
Методы JSON значительно уступают примитиву движка Gecko .toSource ().
Смотрите ответ статьи SO для сравнительных тестов.
Кроме того, ответ выше относится к http://forums.devshed.com/javascript-development-115/tosource-with-arrays-in-ie-386109.html, который, как JSON, (который другая статья http: // www.davidpirek.com/blog/object-to-string-how-to-deserialize-json использует через "ExtJs JSON кодировать исходный код" ) не может обрабатывать циклические ссылки и является неполным. Приведенный ниже код показывает его (поддельные) ограничения (исправлено для обработки массивов и объектов без содержимого).
( прямая ссылка на код в //forums.devshed.com/ ... / tosource-with-arrays-in-ie-386109 )
который отображает:
а также
а также
источник
На самом деле в существующих ответах отсутствует одна простая опция (для последних браузеров и Node.js):
Я бы предпочел это, поскольку
JSON.stringify()
имеет определенные ограничения (например, с круговыми структурами).источник
Похоже, JSON принимает второй параметр, который может помочь с функциями - replacer , это решает проблему преобразования самым элегантным способом:
источник
Если вы заботитесь только о строках, объектах и массивах:
источник
stringify-object
хорошая библиотека npm, созданная командой yeoman: https://www.npmjs.com/package/stringify-objectтогда:
Очевидно, это интересно, только если у вас есть круговой объект, который потерпит неудачу с
JSON.stringify();
источник
Взгляните на плагин jQuery-JSON
По своей сути он использует JSON.stringify, но возвращается к своему собственному парсеру, если браузер не реализует его.
источник
Поскольку Firefox не преобразует какой-либо объект в экранный объект; если вы хотите получить такой же результат, как
JSON.stringify(obj)
:источник
Для не вложенных объектов:
источник
Поскольку Javascript v1.0 работает везде (даже в IE), он является нативным подходом и позволяет очень экономно смотреть на ваш объект при отладке и в процессе производства https://developer.mozilla.org/en/docs/Web/JavaScript/Reference / Global_Objects / Объект / ToString
Полезный пример
Также в качестве бонуса
источник
Если вы можете использовать lodash, вы можете сделать это следующим образом:
С Лодаш
map()
вы также можете перебирать объекты. Это сопоставляет каждую запись ключа / значения с ее строковым представлением:А также
join()
положить записи массива вместе.Если вы можете использовать ES6 Template String, это также работает:
Обратите внимание, что это не идет рекурсивно через объект:
Как узел
util.inspect()
будет делать:источник
Если вы используете JavaScript-каркас Dojo, то для этого уже есть встроенная функция: dojo.toJson (), которая будет использоваться следующим образом.
который вернет строку. Если вы хотите преобразовать объект в данные json, добавьте второй параметр true.
http://dojotoolkit.org/reference-guide/dojo/toJson.html#dojo-tojson
источник
Пример использования:
your_object1.txt:
your_object2.txt:
источник
Для вашего примера, я думаю
console.log("Item:",o)
, будет проще всего. Но,console.log("Item:" + o.toString)
также будет работать.Использование метода номер один использует хороший выпадающий список в консоли, поэтому длинный объект будет работать хорошо.
источник
источник
Надеюсь этот пример поможет всем тем, кто все работает над массивом объектов
источник
Если вы не используете aplay join () для Object.
источник
Циркулярные ссылки
Используя указанный ниже заменитель, мы можем создать менее избыточный JSON - если исходный объект содержит множественные ссылки на некоторый объект или содержит циклические ссылки - тогда мы ссылаемся на него с помощью специальной строки пути (аналогично JSONPath ) - мы используем ее следующим образом
Показать фрагмент кода
БОНУС : а вот обратная функция такой сериализации
Показать фрагмент кода
источник