Javascript / Chrome-Webkitインスペクターからオブジェクトをコードとしてコピーする方法


493

JavaScriptオブジェクトをログに記録するために、JavaScriptでconsole.logステートメントを実行しています。私はそれが終わったら、そのオブジェクトをJavaScriptコードとしてコピーする方法があるかどうか疑問に思っています。私がやろうとしているのは、ajaxを使用して作成されたオブジェクトをxmlフィードを解析して静的javascriptオブジェクトに変換し、サーバーなしでファイルをローカルで実行できるようにすることです。クロムインスペクターウィンドウにオブジェクトのスクリーンショットを含めたので、私が何をしようとしているのかを確認できます。ここに画像の説明を入力してください


1
firefoxとオプション.toSource()を使用してみてください。より簡単です
chepe263

回答:


1249
  1. Chromeのコンソールでオブジェクトを右クリックStore as Global Variableし、コンテキストメニューから選択します。temp1変数名のようなものを返します。

  2. Chromeにもcopy()メソッドがあるためcopy(temp1)、コンソールでそのオブジェクトをクリップボードにコピーする必要があります。

Chrome DevToolsでJavaScriptオブジェクトをコピーする

再帰オブジェクトに関する注意:再帰オブジェクトをコピーしようとすると、が表示されます[object Object]。解決方法はです。copy(JSON.stringify(temp1))オブジェクトは有効なJSONとしてクリップボードに完全にコピーされるため、多くのリソースのいずれかを使用して、好きなようにフォーマットできます。


3
クロムバージョン49.0.2623.87(64ビット)で未定義を返しますか?なぜ>?
Pardeep Jain

10
@PardeepJain-返すものが何もないため、copy()メソッドから予期されます。データはクリップボードにあるはずです。
カール

35
これはちょうど[object Object]私に与えます。
Ullallulloo 2017年

1
このようJSON.stringifyでログアウトしてみてください@Ullallulloo stackoverflow.com/a/4293047/622287
kevnk

3
これは、浅いJSオブジェクトがある場合にのみ機能し、再帰的な深いオブジェクトがある場合は、[オブジェクトオブジェクト]を取得します-予想されます
Marwen Trabelsi 2018

62

お試しくださいJSON.stringify()。結果の文字列をコピーします。循環参照を含むオブジェクトでは機能しません。


7
ログに記録するコードを変更しない限り、それがどのように機能するかはわかりません。
iConnor

16
私が得るTypeError: Converting circular structure to JSON
トニーブラスナス

40

copy(JSON.stringify(Object_Name));を使用してオブジェクトをクリップボードにコピーできますコンソールで。

例:-以下のコードをコピーしてコンソールに貼り付け、Enterキーを押します。次に、他の場所に貼り付けてみてください(Windowsの場合はCTRL + V、Macの場合はCMD + V)、 {"name": "Daniel"、 "age":25}が表示されます。

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

copy(JSON.stringify(profile));

14
DOMノード、ウィンドウ、または円形のその他のオブジェクトでは機能しません
Carles Alcolea

大きくて単純なオブジェクトに対しては、はるかに簡単なソリューションです。
ハーシージー2017年

最も簡単なソリューション
Anandhukrishna VR

26

これで、オブジェクトを右クリックして[グローバル変数として保存]を選択することで、Chromeでこれを実現できます。http//www.youtube.com/watch?v = qALFiTlVWdg

ここに画像の説明を入力してください


2
バージョン39.0.2171.95以降、ChromeでAndroidデバイスを検査する場合、「グローバル変数として保存」オプションは使用できません。
Walter Roman

1
@David Calhoun、私はあなたの答えに投票しました。あなたの回答は2014年6月12日に投稿されたようです。承認されたのは2014年8月5日で、主にあなたの回答をそのまま反映しています。私は彼がtemp1について言及していることを認めなければなりません。あなたの答えがあなたのビデオでそれだけを示しているので、多分それが他の答えが受け入れられた理由です。ご多幸を祈る。
PatS 2018

13

次の手順に従ってください。

  1. 次のように、コードからconsole.logを使用してオブジェクトを出力します。console.log(myObject)
  2. オブジェクトを右クリックし、[グローバルオブジェクトとして保存]をクリックします。この時点で、Chromeは変数の名前を出力します。「temp1」と呼ばれているとしましょう。
  3. コンソールで、次のように入力しますJSON.stringify(temp1)
  4. この時点で、JSONオブジェクト全体が、コピー/貼り付け可能な文字列として表示されます。
  5. http://www.jsoneditoronline.org/などのオンラインツールを使用して、この時点で文字列をきれいにできます。

JSON.stringify(temp1)のステップは、オブジェクトが大きい場合、長時間の実行に影響を与える可能性があります。
ヘロイン

@JoeTidee同じ問題がありましたが、debuggerステートメントを設定してから、コンソールからブレークポイントで変数を直接取得しました。
トニーブラスナス


0

「グローバル変数として保存」を使用しても機能しますが、オブジェクトの最終インスタンスのみが取得され、オブジェクトがログに記録された瞬間は取得されません(オブジェクトに対する変更を発生時に比較したい場合があるため)。変更された正確な時点でオブジェクトを取得するには、これを使用します...

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

そんな風に...

logObject(puzzle);

データにカンマが含まれている場合は、.replace(/./ g、 "、\ n")正規表現を削除することをお勧めします。


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);

次に、エディターに貼り付けます。


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;
  }, ' ');
}

0

保存したいデータを右クリック


0

これをコンソールに追加して実行します

copy(JSON.stringify(foo));

これはあなたのJSONをクリップボードにコピーします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.