Javascript / Chrome - Как скопировать объект из инспектора webkit в виде кода

493

Я делаю заявление console.log в моем javascript для регистрации объекта javascript. Мне интересно, есть ли способ, как только это будет сделано, - скопировать этот объект в виде кода JavaScript. Я пытаюсь преобразовать объект, созданный с помощью ajax, для анализа потока XML в статический объект javascript, чтобы файл мог работать локально, без сервера. Я включил скриншот объекта в окно Chrome Inspector, чтобы вы могли видеть, что я пытаюсь сделать.введите описание изображения здесь

mheavers
источник
1
Попробуйте использовать Firefox и опцию .toSource (). Это проще
chepe263

Ответы:

1250
  1. Щелкните правой кнопкой мыши объект в консоли Chrome и выберите Store as Global Variableв контекстном меню. Он вернет что-то вроде temp1имени переменной.

  2. В Chrome также есть copy()метод, поэтому copy(temp1)в консоли следует скопировать этот объект в буфер обмена.

Скопируйте объект Javascript в Chrome DevTools

Примечание по рекурсивным объектам: если вы пытаетесь скопировать рекурсивный объект, вы получите [object Object]. Выход состоит в том copy(JSON.stringify(temp1)), что объект будет полностью скопирован в буфер обмена как допустимый JSON, поэтому вы сможете отформатировать его по своему усмотрению, используя один из множества ресурсов.

kevnk
источник
3
вернуть неопределенное в chrome Версия 49.0.2623.87 (64-разрядная версия)? почему>?
Пардип Джейн
10
@PardeepJain - это ожидается от метода copy (), потому что возвращать нечего. Данные должны быть в вашем буфере обмена.
Карл
35
Это просто дает [object Object]мне.
Ullallulloo
1
@Ullallulloo попробуйте выйти из JSON.stringify следующим образом: stackoverflow.com/a/4293047/622287
kevnk
3
это работает, только если у вас есть мелкий объект JS, если у вас есть рекурсивный глубокий объект, тогда вы получите [Object Object] - что и ожидается
Marwen Trabelsi
62

Попробуй JSON.stringify(). Скопируйте полученную строку. Не работает с объектами, содержащими циклические ссылки.

Салман А
источник
7
Я не понимаю, как это будет работать, если вы не измените код, который его регистрирует.
iConnor
16
Я получаюTypeError: Converting circular structure to JSON
Тони Брасунас
40

Вы можете скопировать объект в буфер обмена с помощью copy (JSON.stringify (Object_Name)); в консоли.

Например: - Скопируйте и вставьте приведенный ниже код в вашу консоль и нажмите ENTER. Теперь попробуйте вставить (CTRL + V для Windows или CMD + V для Mac) куда-нибудь еще, и вы получите {"name": "Daniel", "age": 25}

var profile = {
    name: "Daniel",
    age: 25
};

copy(JSON.stringify(profile));
Sudharshan
источник
14
Не работает с узлами DOM, окном или любым другим круглым объектом
Carles Alcolea
Безусловно, самое простое решение для большого, но простого объекта.
Хершизи
самое простое решение
Anandhukrishna VR
26

Теперь вы можете выполнить это в Chrome, щелкнув правой кнопкой мыши объект и выбрав «Сохранить как глобальную переменную»: http://www.youtube.com/watch?v=qALFiTlVWdg

введите описание изображения здесь

Дэвид Кэлхун
источник
2
Начиная с версии 39.0.2171.95, опция «Сохранить как глобальную переменную» недоступна при проверке устройств Android с помощью Chrome.
Вальтер Роман
1
@ Дэвид Кэлхун, я голосовал за твой ответ. Похоже, ваш ответ был опубликован 12 июня 2014 года, а принятый был 5 августа 2014 года, в основном с учетом того, что у вас было. Я должен признать, что он упоминает temp1, где ваш ответ показывает только его в вашем видео, поэтому, возможно, именно поэтому был принят другой ответ. С наилучшими пожеланиями.
PatS
13

Выполните следующие шаги:

  1. Выведите объект с помощью console.log из вашего кода, например, так: console.log (myObject)
  2. Щелкните правой кнопкой мыши по объекту и выберите «Сохранить как глобальный объект». На этом этапе Chrome напечатает имя переменной. Давайте предположим, что это называется "temp1".
  3. В консоли введите: JSON.stringify(temp1).
  4. На этом этапе вы увидите весь объект JSON в виде строки, которую вы можете скопировать / вставить.
  5. Вы можете использовать онлайн-инструменты, такие как http://www.jsoneditoronline.org/, чтобы предварительно настроить вашу строку на этом этапе.
sufinawaz
источник
Шаг с JSON.stringify (temp1) может повлиять на длительное выполнение, если объект большой.
героин
@JoeTidee У меня была та же проблема, но я настроил debuggerоператор и затем извлек свою переменную непосредственно из консоли в точке останова.
Тони Брасунас
11

Если вы отправили объект поверх запроса, вы можете скопировать его с вкладки Chrome -> Network.

Запрос полезной нагрузки -> Просмотр источника

введите описание изображения здесь

введите описание изображения здесь

Кристофер Маршалл
источник
2
После копирования проанализированной полезной нагрузки вы можете отформатировать json с сайта jsonformatter.curiousconcept.com .
Мухаммед Хасан
0

Использование «Хранить как глобальная переменная» работает, но оно получает только конечный экземпляр объекта, а не момент регистрации объекта (поскольку вы, вероятно, захотите сравнить изменения с объектом по мере их возникновения). Чтобы получить объект в его точный момент времени, я использую это ...

function logObject(object) {
    console.info(JSON.stringify(object).replace(/,/g, ",\n"));
}

Назови это так ...

logObject(puzzle);

Вы можете удалить регулярное выражение .replace (/./ g, ", \ n"), если в ваших данных есть запятая.

HoldOffHunger
источник
0

Так,. У меня была эта проблема. кроме меня получил [объект объекта]

Я уверен, что вы могли бы сделать это с помощью рекурсии, но это сработало для меня:

Вот что я сделал в своей консоли:

var object_that_is_not_shallow = $("all_obects_with_this_class_name");
var str = '';
object_that_is_not_shallow.map(function(_,e){
    str += $(e).html();
});
copy(str);

Затем вставьте в свой редактор.

twalow
источник
0

Это должно помочь структурировать глубокие объекты, исключая рекурсивные объекты Windowи Nodeобъекты.

function stringifyObject(e) {
  const obj = {};
  for (let k in e) {
    obj[k] = e[k];
  }

  return JSON.stringify(obj, (k, v) => {
    if (v instanceof Node) return 'Node';
    if (v instanceof Window) return 'Window';
    return v;
  }, ' ');
}
dummker
источник
0

Щелкните правой кнопкой мыши данные, которые вы хотите сохранить

  • Во-первых, щелкните правой кнопкой мыши на данных, которые вы хотите сохранить -> выберите «Сохранить как глобальную переменную», и новая временная переменная будет выглядеть так: (переменная temp3): в консоли появится новая временная переменная
  • Во-вторых, используйте команду copy (temp_variable_name), как изображение: введите здесь описание изображения. После этого вы можете вставлять данные в любое место. надеюсь, что полезно /
Нео_
источник
0

Добавьте это к своей консоли и выполните

copy(JSON.stringify(foo));

Это копирует ваш JSON в буфер обмена

user3294854
источник