オブジェクトを文字列に変換する


975

JavaScriptオブジェクトを文字列に変換するにはどうすればよいですか?

例:

var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)

出力:

Object {a = 1、b = 2} //非常に読みやすい出力:)
Item:[object Object] //何が入っているかわからない:(


7
文字列に変換する目的は何ですか?文字列から後でオブジェクトを構築できるようにシリアル化するということですか?または単に表示のために?
シャドウウィザードはあなたのための耳です

19
作者は何年も前から亡くなっていますが、何年も経ってから、問題の入り口はconsole.log(obj)でしたが、console.log( 'obj:' + obj )それ以外の場合は方向感覚が失われます。
ダヌビアンセーラー

2
2つのオブジェクトを追加するだけでは適用できません。できる場合は、値の型と参照の型に違いはありません。
Nishant Kumar 14年

12
var o = {a:1、b:2}; console.log( 'Item:' + JSON.stringify(o))
Nishant Kumar

22
コンソールの場合は、をお勧めしconsole.log("Item", obj);ます。複雑なものは必要ありません。
soktinpk 2014年

回答:


1333

JSON.stringifyオブジェクト内の変数のセットをJSON文字列に変換するを使用することをお勧めします。最新のブラウザのほとんどは、このメソッドをネイティブでサポートしていますが、サポートしていない場合は、JSバージョンを含めることができます。

var obj = {
  name: 'myObj'
};

JSON.stringify(obj);

7
参考までに、IE6と7ではこれをサポートしていません。IE6はそれほど多くのユーザーがいないためそれほど大した問題ではなく、それを殺すためのアクティブなキャンペーンです...しかし、まだかなりの数のIE7ユーザーがいます(ユーザーベースによって異なります)。
MikeMurko

30
「キャッチされていないTypeError:循環構造をJSONに変換しています」が表示されます。循環参照がある場合でも、オブジェクトの文字列表現を見たいと思います。私に何ができる?
Pascal Klein

26
オブジェクトに関数プロパティがある場合、これは機能しませんfoo: function () {...}。例:。
ブロックアダムス

2
StackOverflowからクリックした場合、JSONライブラリへのリンクが機能しません。アドレスバーにコピーして貼り付けます。
f.ardelian

1
JSON.stringify(obj, null, 2);よりきれいな出力に使用できます。
l.poellabauer

126

javascript String()関数を使用する

 String(yourobject); //returns [object Object]

またはstringify()

JSON.stringify(yourobject)

28
var foo = {bar:1}; String(foo); -> "[object Object]"
Anti Veeranna 2016年

1
var foo = {bar:1}; String(foo ['bar']); -> "1"
Vikram Pote 2016年

3
あなたは、文字列の使用JSON.stringify(FOO)のような全オブジェクトたい場合
ビクラムPoteのが

8
JSON.stringify(yourobject)今日はメイド!
神経伝達物質

1
@TranslucentCloud *製
Parampal Pooni 2017

87

もちろん、オブジェクトを文字列に変換するには、次のような独自のメソッドを使用する必要があります。

function objToString (obj) {
    var str = '';
    for (var p in obj) {
        if (obj.hasOwnProperty(p)) {
            str += p + '::' + obj[p] + '\n';
        }
    }
    return str;
}

実際、上記は一般的なアプローチを示しているにすぎません。http://phpjs.org/functions/var_export:578またはhttp://phpjs.org/functions/var_dump:604のようなものを使用したい場合があります

または、メソッド(オブジェクトのプロパティとして機能)を使用していない場合は、新しい標準を使用できる可能性があります(ただし、古いブラウザには実装されていませんが、それらを支援するユーティリティを見つけることができます)、JSON .stringify()。しかし、繰り返しになりますが、オブジェクトがJSONにシリアル化できない関数やその他のプロパティを使用している場合は機能しません。


78

をシンプルに保つconsoleには、の代わりにカンマを使用するだけ+です。+コンマはコンソールで個別に表示されます一方、文字列にオブジェクトを変換しようとします。

例:

var o = {a:1, b:2};
console.log(o);
console.log('Item: ' + o);
console.log('Item: ', o);   // :)

出力:

Object { a=1, b=2}           // useful
Item: [object Object]        // not useful
Item:  Object {a: 1, b: 2}   // Best of both worlds! :)

リファレンス:https : //developer.mozilla.org/en-US/docs/Web/API/Console.log


素晴らしいソリューション!しかし、これを単に行うと、舞台裏で何が起こるか教えてくれconsole.log(o)ますか?文字列に追加されたオブジェクトをログに記録しようとすると、実際にはtoString()そのオブジェクトが呼び出されます。
Gocy015

1
console.log最終的にはPrinter、仕様に記載されているものと呼ばれるものを呼び出します。「実装がどのように引数を出力するかは実装次第です」-つまり、すべてのブラウザがこれを異なる方法で実行できます(console.spec.whatwg.org/#printerを参照)。Firefoxはオブジェクトを文字列として表示しますが、色はきれいです。Chromeでは、オブジェクトをインタラクティブグループとして表示し、展開してプロパティを表示できます。試してみる!
ルーク、

2
非常に優れたトリックであり、最新のWebブラウザーにはおそらく問題ありませんが、すべてのJS実装に対して100%信頼できるわけではありません。たとえば、JSエンジンを実装するQt QMLでは、出力console.log('Item: ', o);はまだItem: [object Object]です。
Paul Masri-Stone

代わりに、JavaScriptオブジェクトを文字列として印刷する代わりに、JavaScriptオブジェクトを印刷console.logするために使用できconsole.dir(o)ます。開発者ツールでは、これにより、オブジェクトを開いて、すべてのプロパティ(配列も含む)をチェックできます。(参照:developer.mozilla.org/de/docs/Web/API/Console/dir
EagleT

37

編集 Internet Explorerでは機能しないため、この回答は使用しないでください。Gary Chambersソリューションを使用します。

toSource()はあなたが探している関数で、それをJSONとして書き出します。

var object = {};
object.first = "test";
object.second = "test2";
alert(object.toSource());

6
Firefoxでのデバッグには便利ですがtoSource()、IE では機能しません。
ブレットザミール

4
toSource()は標準として認識されていないため、すべてのブラウザでサポートされる保証はありません。
Gary Chambers

11
ああ、指摘してくれてありがとう それを知らない人のためにここに私の答えを残します。
Gazler、2011

これはjavascriptを使用している環境では素晴らしいソリューションですが、コンソールログは不便でアクセスできないため、もっと賛成できればと思います。
ザックモリス

toSourceにポリピルを提供できます:github.com/oliver-moran/toSource.js/blob/master/toSource.js
roland

32

1つのオプション

console.log('Item: ' + JSON.stringify(o));

oは文字列として出力されます

別のオプション(コメントでsoktinpkが指摘したとおり)で、コンソールのIMOデバッグに適しています。

console.log('Item: ', o);

oはオブジェクトとして印刷されます。フィールドがさらにある場合は、ドリルダウンできます。


22

ここでの解決策はどれも私にとってうまくいきませんでした。JSON.stringifyは多くの人が言うように見えますが、関数を削除し、テスト時に試したオブジェクトや配列によってはかなり壊れているようです。

少なくともChromeで動作する独自のソリューションを作成しました。ここに投稿して、Googleでこれを検索した人が見つけられるようにします。

//Make an object a string that evaluates to an equivalent object
//  Note that eval() seems tricky and sometimes you have to do
//  something like eval("a = " + yourString), then use the value
//  of a.
//
//  Also this leaves extra commas after everything, but JavaScript
//  ignores them.
function convertToText(obj) {
    //create an array that will later be joined into a string.
    var string = [];

    //is object
    //    Both arrays and objects seem to return "object"
    //    when typeof(obj) is applied to them. So instead
    //    I am checking to see if they have the property
    //    join, which normal objects don't have but
    //    arrays do.
    if (typeof(obj) == "object" && (obj.join == undefined)) {
        string.push("{");
        for (prop in obj) {
            string.push(prop, ": ", convertToText(obj[prop]), ",");
        };
        string.push("}");

    //is array
    } else if (typeof(obj) == "object" && !(obj.join == undefined)) {
        string.push("[")
        for(prop in obj) {
            string.push(convertToText(obj[prop]), ",");
        }
        string.push("]")

    //is function
    } else if (typeof(obj) == "function") {
        string.push(obj.toString())

    //all other values can be done with JSON.stringify
    } else {
        string.push(JSON.stringify(obj))
    }

    return string.join("")
}

編集:私はこのコードが改善できることを知っていますが、それを実行することはできませんでした。ユーザーアンドレイは、改善を提案し、ここでコメントして:

これは少し変更されたコードで、 'null'と 'undefined'を処理でき、余分なコンマを追加しません。

確認はしていませんので、自己責任でご利用ください。コメントとして追加の改善を提案してください。


一部の '}がありません
dacopenhagen

2
とても良いコードですが,、各オブジェクト/配列の最後に末尾があります。
NiCkニューマン2015

これが最良の答えです
Roman

20

コンソールに出力するだけの場合は、を使用できますconsole.log('string:', obj)コンマに注意してください。


これは、AJAXと遅延オブジェクトが再生されるシナリオで問題を引き起こします。AJAXが配列に並列でデータを提供し終えた後に出力console.logが表示されることが多く、誤解を招く結果になります。そのような場合、オブジェクトのクローンまたはシリアル化が適切です。複製したオブジェクトをログに記録するため、AJAXが作業を終了しても、「古い」データが書き込まれます。
rr- 2014年

18

オブジェクトがブール値、日付、文字列、数値などであることがわかっている場合は、javascriptのString()関数が適切に機能します。私は最近、これがjqueryの$ .each関数からの値を処理するのに役立つとわかりました。

たとえば、次のコードは「値」のすべてのアイテムを文字列に変換します。

$.each(this, function (name, value) {
  alert(String(value));
});

詳細はこちら:

http://www.w3schools.com/jsref/jsref_string.asp


またはvar my_string = ''+value+'';
ジョンマグノリア

1
私のために働く。このような単純なタスクにはプラグインを使用しないので、このソリューションを選択します。
Tillito

15
var obj={
name:'xyz',
Address:'123, Somestreet'
 }
var convertedString=JSON.stringify(obj) 
 console.log("literal object is",obj ,typeof obj);
 console.log("converted string :",convertedString);
 console.log(" convertedString type:",typeof convertedString);

12

私はこれを探していて、インデント付きの深い再帰的なものを書きました:

function objToString(obj, ndeep) {
  if(obj == null){ return String(obj); }
  switch(typeof obj){
    case "string": return '"'+obj+'"';
    case "function": return obj.name || obj.toString();
    case "object":
      var indent = Array(ndeep||1).join('\t'), isArray = Array.isArray(obj);
      return '{['[+isArray] + Object.keys(obj).map(function(key){
           return '\n\t' + indent + key + ': ' + objToString(obj[key], (ndeep||1)+1);
         }).join(',') + '\n' + indent + '}]'[+isArray];
    default: return obj.toString();
  }
}

使用法 : objToString({ a: 1, b: { c: "test" } })


あなたが循環参照を持つオブジェクトのための無限ループを防ぐためにしたい場合は、追加可能性があることに注意if(ndeep > MAX_DEPTH_LEVEL){ return '...'; }MAX_DEPTH_LEVELを掘るためのオブジェクトレイヤーの選択した最大数であることと、関数の中で。
SylvainPV


9

1。

JSON.stringify(o);

アイテム:{"a": "1"、 "b": "2"}

2。

var o = {a:1, b:2};
var b=[]; Object.keys(o).forEach(function(k){b.push(k+":"+o[k]);});
b="{"+b.join(', ')+"}";
console.log('Item: ' + b);

アイテム:{a:1、b:2}


1
回答の詳細を追加することを検討した方がよいでしょう。
Harun Diluka Heshan

8

JSONメソッドは、Geckoエンジンの.toSource()プリミティブよりもかなり劣っています。

比較テストについては、SO記事の応答を参照してください。

また、上記答えはJSONのようなhttp://forums.devshed.com/javascript-development-115/tosource-with-arrays-in-ie-386109.htmlを参照しています(他の記事http:// www.davidpirek.com/blog/object-to-string-how-to-deserialize-json uses "ExtJs JSON encode source code")は循環参照を処理できず、不完全です。以下のコードは、その(スプーフィング)制限(コンテンツのない配列とオブジェクトを処理するように修正)を示しています。

//forums.devshed.com/内のコードへの直接リンク... / tosource-with-arrays-in-ie-386109

javascript:
Object.prototype.spoof=function(){
    if (this instanceof String){
      return '(new String("'+this.replace(/"/g, '\\"')+'"))';
    }
    var str=(this instanceof Array)
        ? '['
        : (this instanceof Object)
            ? '{'
            : '(';
    for (var i in this){
      if (this[i] != Object.prototype.spoof) {
        if (this instanceof Array == false) {
          str+=(i.match(/\W/))
              ? '"'+i.replace('"', '\\"')+'":'
              : i+':';
        }
        if (typeof this[i] == 'string'){
          str+='"'+this[i].replace('"', '\\"');
        }
        else if (this[i] instanceof Date){
          str+='new Date("'+this[i].toGMTString()+'")';
        }
        else if (this[i] instanceof Array || this[i] instanceof Object){
          str+=this[i].spoof();
        }
        else {
          str+=this[i];
        }
        str+=', ';
      }
    };
    str=/* fix */(str.length>2?str.substring(0, str.length-2):str)/* -ed */+(
        (this instanceof Array)
        ? ']'
        : (this instanceof Object)
            ? '}'
            : ')'
    );
    return str;
  };
for(i in objRA=[
    [   'Simple Raw Object source code:',
        '[new Array, new Object, new Boolean, new Number, ' +
            'new String, new RegExp, new Function, new Date]'   ] ,

    [   'Literal Instances source code:',
        '[ [], {}, true, 1, "", /./, function(){}, new Date() ]'    ] ,

    [   'some predefined entities:',
        '[JSON, Math, null, Infinity, NaN, ' +
            'void(0), Function, Array, Object, undefined]'      ]
    ])
alert([
    '\n\n\ntesting:',objRA[i][0],objRA[i][1],
    '\n.toSource()',(obj=eval(objRA[i][1])).toSource(),
    '\ntoSource() spoof:',obj.spoof()
].join('\n'));

表示されるもの:

testing:
Simple Raw Object source code:
[new Array, new Object, new Boolean, new Number, new String,
          new RegExp, new Function, new Date]

.toSource()
[[], {}, (new Boolean(false)), (new Number(0)), (new String("")),
          /(?:)/, (function anonymous() {}), (new Date(1303248037722))]

toSource() spoof:
[[], {}, {}, {}, (new String("")),
          {}, {}, new Date("Tue, 19 Apr 2011 21:20:37 GMT")]

そして

testing:
Literal Instances source code:
[ [], {}, true, 1, "", /./, function(){}, new Date() ]

.toSource()
[[], {}, true, 1, "", /./, (function () {}), (new Date(1303248055778))]

toSource() spoof:
[[], {}, true, 1, ", {}, {}, new Date("Tue, 19 Apr 2011 21:20:55 GMT")]

そして

testing:
some predefined entities:
[JSON, Math, null, Infinity, NaN, void(0), Function, Array, Object, undefined]

.toSource()
[JSON, Math, null, Infinity, NaN, (void 0),
       function Function() {[native code]}, function Array() {[native code]},
              function Object() {[native code]}, (void 0)]

toSource() spoof:
[{}, {}, null, Infinity, NaN, undefined, {}, {}, {}, undefined]

8

既存の回答に欠けている実際の1つの簡単なオプション(最近のブラウザーとNode.js)があります。

console.log('Item: %o', o);

これにJSON.stringify()は特定の制限があるため(たとえば、環状構造の場合)、これを好みます。


7

これはJSONが機能を助けることができる二番目のパラメータ受け入れる表示されます- 代用し、これが最もエレガントな方法で変換の問題を解決します。

JSON.stringify(object, (key, val) => {
    if (typeof val === 'function') {
      return String(val);
    }
    return val;
  });

5

文字列、オブジェクト、配列のみに関心がある場合:

function objectToString (obj) {
        var str = '';
        var i=0;
        for (var key in obj) {
            if (obj.hasOwnProperty(key)) {
                if(typeof obj[key] == 'object')
                {
                    if(obj[key] instanceof Array)
                    {
                        str+= key + ' : [ ';
                        for(var j=0;j<obj[key].length;j++)
                        {
                            if(typeof obj[key][j]=='object') {
                                str += '{' + objectToString(obj[key][j]) + (j > 0 ? ',' : '') + '}';
                            }
                            else
                            {
                                str += '\'' + obj[key][j] + '\'' + (j > 0 ? ',' : ''); //non objects would be represented as strings
                            }
                        }
                        str+= ']' + (i > 0 ? ',' : '')
                    }
                    else
                    {
                        str += key + ' : { ' + objectToString(obj[key]) + '} ' + (i > 0 ? ',' : '');
                    }
                }
                else {
                    str +=key + ':\'' + obj[key] + '\'' + (i > 0 ? ',' : '');
                }
                i++;
            }
        }
        return str;
    }

5

stringify-objectyeomanチームによって作成された優れたnpmライブラリです。https//www.npmjs.com/package/stringify-object

npm install stringify-object

次に:

const stringifyObject = require('stringify-object');
stringifyObject(myCircularObject);

明らかにそれが失敗する円形オブジェクトがある場合にのみ興味深いです JSON.stringify();


1
なぜ誰かがこのようなものにNPMモジュールを使用するのでしょうか?これはプレーンなJSのワンライナーで実現できますか?この答えには、誰もがそうする理由についての詳細が必要です。
Zelphir Kaltstahl、2018年

多くの場合、libは特別な場合に役立ちます。循環参照の処理に使用しました。
Nicolas Zozol 2018年

1
これは、円形のオブジェクトに関するメモを追加することでより理に適っており、私の反対票を取り除きます。
Zelphir Kaltstahl 2018年

4

jQuery-JSONプラグインを見てください

基本的には、JSON.stringifyを使用しますが、ブラウザが実装していない場合は独自のパーサーにフォールバックします。


4

Firefoxは一部のオブジェクトを画面オブジェクトとして文字列化しないため、次のような同じ結果が必要な場合JSON.stringify(obj)

function objToString (obj) {
    var tabjson=[];
    for (var p in obj) {
        if (obj.hasOwnProperty(p)) {
            tabjson.push('"'+p +'"'+ ':' + obj[p]);
        }
    }  tabjson.push()
    return '{'+tabjson.join(',')+'}';
}


2
var o = {a:1, b:2};

o.toString=function(){
  return 'a='+this.a+', b='+this.b;
};

console.log(o);
console.log('Item: ' + o);

JavaScript v1.0はあらゆる場所(IEを含む)で機能するため、これはネイティブアプローチであり、デバッグ中および本番環境でのオブジェクトの非常にコストのかかる外観を可能にします 。 / Global_Objects / Object / toString

有用な例

var Ship=function(n,x,y){
  this.name = n;
  this.x = x;
  this.y = y;
};
Ship.prototype.toString=function(){
  return '"'+this.name+'" located at: x:'+this.x+' y:'+this.y;
};

alert([new Ship('Star Destroyer', 50.001, 53.201),
new Ship('Millennium Falcon', 123.987, 287.543),
new Ship('TIE fighter', 83.060, 102.523)].join('\n'));//now they can battle!
//"Star Destroyer" located at: x:50.001 y:53.201
//"Millennium Falcon" located at: x:123.987 y:287.543
//"TIE fighter" located at: x:83.06 y:102.523

また、おまけとして

function ISO8601Date(){
  return this.getFullYear()+'-'+(this.getMonth()+1)+'-'+this.getDate();
}
var d=new Date();
d.toString=ISO8601Date;//demonstrates altering native object behaviour
alert(d);
//IE6   Fri Jul 29 04:21:26 UTC+1200 2016
//FF&GC Fri Jul 29 2016 04:21:26 GMT+1200 (New Zealand Standard Time)
//d.toString=ISO8601Date; 2016-7-29

2

lodashを使用できる場合は、次の方法で実行できます。

> var o = {a:1, b:2};
> '{' + _.map(o, (value, key) => key + ':' + value).join(', ') + '}'
'{a:1, b:2}'

lodash map()を使用すると、オブジェクトを反復することもできます。これは、すべてのキー/値エントリをその文字列表現にマップします。

> _.map(o, (value, key) => key + ':' + value)
[ 'a:1', 'b:2' ]

そしてjoin()、配列エントリをまとめます。

ES6テンプレート文字列を使用できる場合、これも機能します。

> `{${_.map(o, (value, key) => `${key}:${value}`).join(', ')}}`
'{a:1, b:2}'

これはオブジェクトを再帰的に実行しないことに注意してください:

> var o = {a:1, b:{c:2}}
> _.map(o, (value, key) => `${key}:${value}`)
[ 'a:1', 'b:[object Object]' ]

以下のようなノードのがutil.inspect()行います。

> util.inspect(o)
'{ a: 1, b: { c: 2 } }'

1

Dojo javascriptフレームワークを使用している場合、これを行うための組み込み関数が既に存在します。dojo.toJson()は、このように使用されます。

var obj = {
  name: 'myObj'
};
dojo.toJson(obj);

文字列を返します。オブジェクトをjsonデータに変換する場合は、trueの2番目のパラメーターを追加します。

dojo.toJson(obj, true);

http://dojotoolkit.org/reference-guide/dojo/toJson.html#dojo-tojson


1
/*
    This function is as JSON.Stringify (but if you has not in your js-engine you can use this)
    Params:
        obj - your object
        inc_ident - can be " " or "\t".
        show_types - show types of object or not
        ident - need for recoursion but you can not set this parameter.
*/
function getAsText(obj, inc_ident, show_types, ident) {
    var res = "";
    if (!ident)
        ident = "";
    if (typeof(obj) == "string") {
        res += "\"" + obj + "\" ";
        res += (show_types == true) ? "/* typeobj: " + typeof(obj) + "*/" : "";
    } else if (typeof(obj) == "number" || typeof(obj) == "boolean") {
        res += obj;
        res += (show_types == true) ? "/* typeobj: " + typeof(obj) + "*/" : "";
    } else if (obj instanceof Array) {
        res += "[ ";
        res += show_types ? "/* typeobj: " + typeof(obj) + "*/" : "";
        res += "\r\n";
        var new_ident = ident + inc_ident;
        var arr = [];
        for(var key in obj) {
            arr.push(new_ident + getAsText(obj[key], inc_ident, show_types, new_ident));
        } 
        res += arr.join(",\r\n") + "\r\n";
        res += ident + "]";
    } else {
        var new_ident = ident + inc_ident;      
        res += "{ ";
        res += (show_types == true) ? "/* typeobj: " + typeof(obj) + "*/" : "";
        res += "\r\n";
        var arr = [];
        for(var key in obj) {
            arr.push(new_ident + '"' + key + "\" : " + getAsText(obj[key], inc_ident, show_types, new_ident));
        }
        res += arr.join(",\r\n") + "\r\n";
        res += ident + "}\r\n";
    } 
    return res;
};

使用例:

var obj = {
    str : "hello",
    arr : ["1", "2", "3", 4],
b : true,
    vobj : {
        str : "hello2"
    }
}

var ForReading = 1, ForWriting = 2;
var fso = new ActiveXObject("Scripting.FileSystemObject")
f1 = fso.OpenTextFile("your_object1.txt", ForWriting, true)
f1.Write(getAsText(obj, "\t"));
f1.Close();

f2 = fso.OpenTextFile("your_object2.txt", ForWriting, true)
f2.Write(getAsText(obj, "\t", true));
f2.Close();

your_object1.txt:

{ 
    "str" : "hello" ,
    "arr" : [ 
        "1" ,
        "2" ,
        "3" ,
        4
    ],
    "b" : true,
    "vobj" : { 
        "str" : "hello2" 
    }

}

your_object2.txt:

{ /* typeobj: object*/
    "str" : "hello" /* typeobj: string*/,
    "arr" : [ /* typeobj: object*/
        "1" /* typeobj: string*/,
        "2" /* typeobj: string*/,
        "3" /* typeobj: string*/,
        4/* typeobj: number*/
    ],
    "b" : true/* typeobj: boolean*/,
    "vobj" : { /* typeobj: object*/
        "str" : "hello2" /* typeobj: string*/
    }

}

1
これは、コードの機能と使用方法の例についての説明です。ありがとう
estemendoza 2014年

1

あなたの例では、私console.log("Item:",o) は最も簡単だと思います 。しかし、 console.log("Item:" + o.toString) うまくいくでしょう。

メソッド番号1を使用すると、コンソールの素敵なドロップダウンが使用されるため、長いオブジェクトはうまく機能します。


1
function objToString (obj) {
    var str = '{';
    if(typeof obj=='object')
      {

        for (var p in obj) {
          if (obj.hasOwnProperty(p)) {
              str += p + ':' + objToString (obj[p]) + ',';
          }
      }
    }
      else
      {
         if(typeof obj=='string')
          {
            return '"'+obj+'"';
          }
          else
          {
            return obj+'';
          }
      }



    return str.substring(0,str.length-1)+"}";
}

1

この例がすべてのオブジェクトの配列で作業しているすべての人に役立つことを願っています

var data_array = [{
                    "id": "0",
                    "store": "ABC"
                },{
                    "id":"1",
                    "store":"XYZ"
                }];
console.log(String(data_array[1]["id"]+data_array[1]["store"]));

1

Object()へのjoin()を実行しない場合。

const obj = {one:1, two:2, three:3};
let arr = [];
for(let p in obj)
    arr.push(obj[p]);
const str = arr.join(',');

0

インライン式タイプの状況で変数を文字列に変換する最小限の方法が必要な場合''+variablenameは、私が試した中で最高です。

'variablename'がオブジェクトであり、空の文字列連結演算を使用すると、迷惑な[object Object]が表示されます。この場合、おそらくJSON.stringify投稿された質問に対するGary C.の非常に賛成の回答が必要になります。これは、MozillaのDeveloper Networkで読むことができます。上部のその回答のリンクにあります

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