Mengubah objek menjadi string


975

Bagaimana saya bisa mengubah objek JavaScript menjadi string?

Contoh:

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

Keluaran:

Object {a = 1, b = 2} // output yang dapat dibaca sangat bagus :)
Item: [object object] // tidak tahu apa yang ada di dalam :(


7
Konversi ke string untuk tujuan apa? Maksud Anda membuat cerita bersambung sehingga Anda dapat membangun objek nanti dari string? Atau hanya untuk pamer?
Shadow Wizard adalah Ear For You

19
Penulis telah pergi dari tahun, tetapi membaca dalam pikiran, setelah bertahun-tahun, saya kira, titik masuk untuk masalah ini adalah console.log (obj), yang menampilkan objek dengan properti, sedangkan console.log ('obj:' + obj ) bekerja sebaliknya membingungkan.
Danubian Sailor

2
tidak bisa menerapkan add dua objek, Jika kita bisa melakukannya tidak akan ada perbedaan dalam tipe nilai dan tipe ref.
Nishant Kumar

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

22
Jika itu untuk konsol, saya akan merekomendasikan melakukannya console.log("Item", obj);. Tidak perlu sesuatu yang rumit.
soktinpk

Jawaban:


1333

Saya akan merekomendasikan menggunakan JSON.stringify, yang mengubah set variabel dalam objek ke string JSON. Sebagian besar browser modern mendukung metode ini secara asli, tetapi bagi yang tidak, Anda dapat menyertakan versi JS :

var obj = {
  name: 'myObj'
};

JSON.stringify(obj);

7
Untuk referensi IE6 dan 7 tidak mendukung ini. IE6 bukan masalah besar karena sangat sedikit pengguna, dan kampanye aktif untuk membunuhnya ... tetapi masih ada beberapa pengguna IE7 di luar sana (tergantung pada basis pengguna Anda).
MikeMurko

30
Saya mendapatkan "UnEught TypeError: Konversi struktur melingkar ke JSON". Bahkan jika ada referensi melingkar, saya masih ingin melihat representasi string dari objek saya. Apa yang dapat saya?
Pascal Klein

26
Ini tidak bekerja jika objek memiliki properti fungsi, misalnya: foo: function () {...}.
Brock Adams

2
Tautan ke perpustakaan JSON tidak berfungsi jika diklik dari StackOverflow. Salin dan tempel di bilah alamat.
f.ardelian

1
Anda dapat menggunakan JSON.stringify(obj, null, 2);untuk hasil yang lebih cantik.
l.poellabauer

126

Gunakan fungsi String javascript ()

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

atau stringify ()

JSON.stringify(yourobject)

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

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

3
Jika Anda ingin seluruh objek sebagai string, gunakan JSON.stringify (foo)
Vikram Pote

8
JSON.stringify(yourobject)pembantu hari saya!
Neurotransmitter

1
@TranslucentCloud * made
Parampal Pooni

87

Tentu, untuk mengubah objek menjadi string, Anda harus menggunakan metode Anda sendiri, seperti:

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

Sebenarnya, di atas hanya menunjukkan pendekatan umum; Anda mungkin ingin menggunakan sesuatu seperti http://phpjs.org/functions/var_export=78 atau http://phpjs.org/functions/var_dump:604

atau, jika Anda tidak menggunakan metode (berfungsi sebagai properti dari objek Anda), Anda mungkin dapat menggunakan standar baru (tetapi tidak diterapkan di browser lama, meskipun Anda dapat menemukan utilitas untuk membantu menggunakannya untuk mereka juga), JSON .stringify (). Tetapi sekali lagi, itu tidak akan berfungsi jika objek menggunakan fungsi atau properti lain yang tidak serial ke JSON.


78

Dengan menjaganya tetap sederhana console, Anda bisa menggunakan koma alih-alih a +. Itu+ akan mencoba untuk mengubah objek ke dalam string, sedangkan koma akan menampilkannya secara terpisah di konsol.

Contoh:

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

Keluaran:

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

Referensi: https://developer.mozilla.org/en-US/docs/Web/API/Console.log


Solusi Greate! Tetapi bisakah Anda memberi tahu saya apa yang terjadi di balik layar ketika Anda melakukan ini console.log(o):? Karena jika Anda mencoba untuk log objek yang ditambahkan ke string, itu sebenarnya memanggil toString()objek.
Gocy015

1
console.logpada akhirnya menyebut sesuatu yang disebut Printerspesifikasi sebagai: "Bagaimana implementasi mencetak args tergantung pada implementasi" - artinya setiap browser dapat melakukan hal yang berbeda ini (lihat console.spec.whatwg.org/#printer ). Firefox akan menampilkan objek sebagai string, tetapi diwarnai dengan baik. Chrome akan menampilkan objek sebagai grup interaktif yang dapat Anda kembangkan untuk melihat properti. Cobalah!
Lukas

2
Trik yang sangat bagus dan mungkin bagus untuk browser web modern, tetapi tidak 100% andal untuk semua implementasi JS. misalnya dalam Qt QML, yang mengimplementasikan mesin JS, output untuk console.log('Item: ', o);masih Item: [object Object].
Paul Masri-Stone

Alih-alih console.logAnda dapat menggunakan console.dir(o)untuk mencetak objek javascript alih-alih mencetaknya sebagai string. Dalam alat pengembang ini memungkinkan untuk membuka objek dan memeriksa semua properti, bahkan array. (lihat: developer.mozilla.org/de/docs/Web/API/Console/dir )
EagleT

37

EDIT Jangan gunakan jawaban ini karena tidak berfungsi di Internet Explorer. Gunakan solusi Gary Chambers .

toSource () adalah fungsi yang Anda cari yang akan menuliskannya sebagai JSON.

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

6
Meskipun nyaman untuk debugging di Firefox, toSource()tidak berfungsi di IE.
Brett Zamir

4
toSource()bukan standar yang dikenali, jadi tidak dapat dijamin didukung di semua browser.
Gary Chambers

11
Ahh, terima kasih sudah menunjukkannya. Saya akan meninggalkan jawaban saya di sini untuk orang lain yang tidak menyadarinya.
Gazler

Saya berharap saya bisa lebih meningkatkan Anda, karena ini adalah solusi brilian untuk lingkungan yang memiliki javascript (tetapi konsol log tidak nyaman / tidak mungkin diakses).
Zack Morris

Anda dapat memberikan polipill ke toSource: github.com/oliver-moran/toSource.js/blob/master/toSource.js
roland

32

Satu pilihan :

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

o dicetak sebagai string

Opsi lain (seperti yang ditunjukkan oleh soktinpk di komentar), dan lebih baik untuk konsol debugging IMO:

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

o dicetak sebagai objek, yang dapat Anda telusuri jika Anda memiliki lebih banyak bidang


22

Tidak ada solusi di sini yang berfungsi untuk saya. JSON.stringify tampaknya seperti yang dikatakan banyak orang, tetapi memotong fungsi dan tampaknya cukup rusak untuk beberapa objek dan array yang saya coba saat mengujinya.

Saya membuat solusi sendiri yang paling tidak berfungsi di Chrome. Posting di sini sehingga siapa pun yang melihat ini di Google dapat menemukannya.

//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("")
}

EDIT: Saya tahu kode ini dapat ditingkatkan tetapi tidak pernah sempat melakukannya. Pengguna andrey menyarankan peningkatan di sini dengan komentar:

Berikut adalah sedikit kode yang diubah, yang dapat menangani 'null' dan 'undefined', dan juga tidak menambahkan koma yang berlebihan.

Gunakan itu dengan risiko Anda sendiri karena saya belum memverifikasi sama sekali. Jangan ragu untuk menyarankan perbaikan tambahan sebagai komentar.


Anda melewatkan beberapa '}
dacopenhagen

2
Kode yang sangat bagus, tetapi ada jejak ,di akhir setiap objek / array.
NiCk Newman

ini adalah jawaban terbaik
Roman

20

Jika Anda hanya keluaran ke konsol, Anda dapat menggunakan console.log('string:', obj). Perhatikan koma .


Ini menimbulkan masalah dalam skenario di mana AJAX dan ditunda datang untuk bermain - output dari console.logsering ditampilkan setelah AJAX selesai memasok array dengan data secara paralel, yang mengarah pada hasil yang menyesatkan. Dalam kasus seperti itu objek kloning atau serialisasi adalah jalannya: karena kita mencatat objek duplikat, bahkan ketika AJAX menyelesaikan pekerjaannya, ia akan mengisi data "lama".
tanggal

18

Dalam kasus di mana Anda tahu objek hanyalah Boolean, Date, String, number dll ... Fungsi javascript String () berfungsi dengan baik. Baru-baru ini saya menemukan ini berguna dalam berurusan dengan nilai-nilai yang berasal dari fungsi $ .each jquery.

Misalnya, yang berikut ini akan mengonversi semua item dalam "nilai" menjadi string:

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

Lebih detail di sini:

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


Atauvar my_string = ''+value+'';
John Magnolia

1
Bekerja untukku. Saya lebih suka solusi ini karena saya tidak akan menggunakan plugin untuk tugas yang begitu sederhana.
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

Saya mencari ini, dan menulis yang rekursif mendalam dengan lekukan:

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

Penggunaan: objToString({ a: 1, b: { c: "test" } })


perhatikan bahwa jika Anda ingin mencegah loop tak terbatas untuk objek dengan referensi melingkar, Anda dapat menambahkan if(ndeep > MAX_DEPTH_LEVEL){ return '...'; }fungsi, dengan MAX_DEPTH_LEVEL menjadi jumlah maksimum lapisan objek yang Anda gali.
SylvainPV

11

Jika Anda hanya ingin melihat objek untuk debugging, Anda bisa menggunakan

var o = {a:1, b:2} 
console.dir(o)

9

1.

JSON.stringify(o);

Item: {"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);

Item: {a: 1, b: 2}


1
Akan lebih baik jika Anda mempertimbangkan untuk menambahkan lebih detail tentang jawaban Anda.
Harun Diluka Heshan

8

Metode JSON cukup kalah dengan mesin Gecko .toSource () primitif.

Lihat respons artikel SO untuk tes perbandingan.

Juga, jawaban di atas mengacu pada http://forums.devshed.com/javascript-development-115/tosource-with-arrays-in-ie-ie-386109.html yang, seperti JSON, (yang artikel lainnya http: // www.davidpirek.com/blog/object-to-string-how-to-deserialize-json menggunakan via "ExtJs JSON encode source code" ) tidak dapat menangani referensi melingkar dan tidak lengkap. Kode di bawah ini menunjukkan batasannya (spoof) (dikoreksi untuk menangani array dan objek tanpa konten).

( tautan langsung ke kode di //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'));

yang menampilkan:

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")]

dan

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")]

dan

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

Sebenarnya ada satu opsi mudah (untuk browser terbaru dan Node.js) yang hilang dalam jawaban yang ada:

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

Saya lebih suka ini karena JSON.stringify()memiliki keterbatasan tertentu (misalnya dengan struktur lingkaran).


7

Tampaknya JSON menerima parameter kedua yang dapat membantu fungsi - replacer , ini memecahkan masalah konversi dengan cara yang paling elegan:

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

5

Jika Anda hanya peduli dengan string, objek, dan array:

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-objectadalah pustaka npm yang baik yang dibuat oleh tim yeoman: https://www.npmjs.com/package/stringify-object

npm install stringify-object

kemudian:

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

Jelas itu menarik hanya jika Anda memiliki objek lingkaran yang akan gagal dengannya JSON.stringify();


1
Mengapa ada orang yang menggunakan modul NPM untuk sesuatu seperti ini, yang dapat dicapai dengan satu-liner di JS polos? Jawaban ini perlu perincian tentang mengapa ada orang yang melakukannya.
Zelphir Kaltstahl

Seperti sering, lib akan membantu dalam kasus tepi. Saya menggunakannya untuk berurusan dengan referensi melingkar.
Nicolas Zozol

1
Ini lebih masuk akal dengan catatan tambahan tentang objek melingkar, menghapus downvote saya.
Zelphir Kaltstahl

4

Lihatlah plugin jQuery-JSON

Pada intinya, ia menggunakan JSON.stringify tetapi kembali ke parsernya sendiri jika browser tidak mengimplementasikannya.


4

Karena firefox tidak mengencangkan beberapa objek sebagai objek layar; jika Anda ingin memiliki hasil yang sama seperti 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(',')+'}';
}

4

Untuk objek yang tidak bersarang:

Object.entries(o).map(x=>x.join(":")).join("\r\n")

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

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

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

Karena Javascript v1.0 bekerja di mana-mana (bahkan IE), ini adalah pendekatan asli dan memungkinkan tampilan objek Anda yang sangat costomised saat debugging dan dalam produksi https://developer.mozilla.org/en/docs/Web/JavaScript/Reference / Global_Objects / Object / toString

Contoh yang bermanfaat

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

Juga, sebagai bonus

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

Jika Anda dapat menggunakan lodash, Anda dapat melakukannya dengan cara ini:

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

Dengan lodash map()Anda dapat beralih di atas Object juga. Ini memetakan setiap entri kunci / nilai ke representasi stringnya:

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

Dan join()menempatkan entri array.

Jika Anda dapat menggunakan String Template ES6, ini juga berfungsi:

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

Harap dicatat bahwa ini tidak bersifat rekursif melalui Object:

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

Seperti yangutil.inspect() akan dilakukan simpul :

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


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

contoh untuk digunakan:

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
Akan bagus dan penjelasan tentang apa yang dilakukan kode dan contoh bagaimana menggunakannya. Terima kasih
estemendoza

1

Sebagai contoh Anda, saya pikir console.log("Item:",o) akan lebih mudah. Tapi, console.log("Item:" + o.toString) pasti juga berhasil.

Menggunakan metode nomor satu menggunakan dropdown yang bagus di konsol, jadi objek yang panjang akan bekerja dengan baik.


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

Saya harap contoh ini akan membantu bagi semua orang yang bekerja pada array objek

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

1

Jika Anda tidak ingin bergabung () ke Obyek.

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

0

Jika Anda menginginkan metode minimalis untuk mengonversi variabel menjadi string untuk situasi tipe ekspresi inline, ''+variablenameadalah yang terbaik yang saya mainkan.

Jika 'variablename' adalah sebuah objek dan Anda menggunakan operasi penggabungan string kosong, itu akan memberikan hal yang menjengkelkan [object Object], dalam hal ini Anda mungkin ingin JSON.stringifyjawaban Gary C. yang sangat tervotifikasi untuk pertanyaan yang diposting, yang dapat Anda baca di Jaringan Pengembang Mozilla di tautan dalam jawaban di atas .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.