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 :(
javascript
string
object
serialization
tostring
pengguna680174
sumber
sumber
console.log("Item", obj);
. Tidak perlu sesuatu yang rumit.Jawaban:
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 :sumber
foo: function () {...}
.JSON.stringify(obj, null, 2);
untuk hasil yang lebih cantik.Gunakan fungsi String javascript ()
atau stringify ()
sumber
JSON.stringify(yourobject)
pembantu hari saya!Tentu, untuk mengubah objek menjadi string, Anda harus menggunakan metode Anda sendiri, seperti:
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.
sumber
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:
Keluaran:
Referensi: https://developer.mozilla.org/en-US/docs/Web/API/Console.log
sumber
console.log(o)
:? Karena jika Anda mencoba untuk log objek yang ditambahkan ke string, itu sebenarnya memanggiltoString()
objek.console.log
pada akhirnya menyebut sesuatu yang disebutPrinter
spesifikasi 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!console.log('Item: ', o);
masihItem: [object Object]
.console.log
Anda dapat menggunakanconsole.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 )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.
sumber
toSource()
tidak berfungsi di IE.toSource()
bukan standar yang dikenali, jadi tidak dapat dijamin didukung di semua browser.Satu pilihan :
console.log('Item: ' + JSON.stringify(o));
Opsi lain (seperti yang ditunjukkan oleh soktinpk di komentar), dan lebih baik untuk konsol debugging IMO:
console.log('Item: ', o);
sumber
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.
EDIT: Saya tahu kode ini dapat ditingkatkan tetapi tidak pernah sempat melakukannya. Pengguna andrey menyarankan peningkatan di sini dengan komentar:
Gunakan itu dengan risiko Anda sendiri karena saya belum memverifikasi sama sekali. Jangan ragu untuk menyarankan perbaikan tambahan sebagai komentar.
sumber
,
di akhir setiap objek / array.Jika Anda hanya keluaran ke konsol, Anda dapat menggunakan
console.log('string:', obj)
. Perhatikan koma .sumber
console.log
sering 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".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:
Lebih detail di sini:
http://www.w3schools.com/jsref/jsref_string.asp
sumber
var my_string = ''+value+'';
sumber
Saya mencari ini, dan menulis yang rekursif mendalam dengan lekukan:
Penggunaan:
objToString({ a: 1, b: { c: "test" } })
sumber
if(ndeep > MAX_DEPTH_LEVEL){ return '...'; }
fungsi, dengan MAX_DEPTH_LEVEL menjadi jumlah maksimum lapisan objek yang Anda gali.Jika Anda hanya ingin melihat objek untuk debugging, Anda bisa menggunakan
sumber
1.
2.
sumber
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 )
yang menampilkan:
dan
dan
sumber
Sebenarnya ada satu opsi mudah (untuk browser terbaru dan Node.js) yang hilang dalam jawaban yang ada:
Saya lebih suka ini karena
JSON.stringify()
memiliki keterbatasan tertentu (misalnya dengan struktur lingkaran).sumber
Tampaknya JSON menerima parameter kedua yang dapat membantu fungsi - replacer , ini memecahkan masalah konversi dengan cara yang paling elegan:
sumber
Jika Anda hanya peduli dengan string, objek, dan array:
sumber
stringify-object
adalah pustaka npm yang baik yang dibuat oleh tim yeoman: https://www.npmjs.com/package/stringify-objectkemudian:
Jelas itu menarik hanya jika Anda memiliki objek lingkaran yang akan gagal dengannya
JSON.stringify();
sumber
Lihatlah plugin jQuery-JSON
Pada intinya, ia menggunakan JSON.stringify tetapi kembali ke parsernya sendiri jika browser tidak mengimplementasikannya.
sumber
Karena firefox tidak mengencangkan beberapa objek sebagai objek layar; jika Anda ingin memiliki hasil yang sama seperti
JSON.stringify(obj)
::sumber
Untuk objek yang tidak bersarang:
sumber
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
Juga, sebagai bonus
sumber
Jika Anda dapat menggunakan lodash, Anda dapat melakukannya dengan cara ini:
Dengan lodash
map()
Anda dapat beralih di atas Object juga. Ini memetakan setiap entri kunci / nilai ke representasi stringnya:Dan
join()
menempatkan entri array.Jika Anda dapat menggunakan String Template ES6, ini juga berfungsi:
Harap dicatat bahwa ini tidak bersifat rekursif melalui Object:
Seperti yang
util.inspect()
akan dilakukan simpul :sumber
Jika Anda menggunakan kerangka kerja javascript Dojo maka sudah ada fungsi build in untuk melakukan ini: dojo.toJson () yang akan digunakan seperti itu.
yang akan mengembalikan sebuah string. Jika Anda ingin mengonversi objek menjadi data json, tambahkan parameter kedua true.
http://dojotoolkit.org/reference-guide/dojo/toJson.html#dojo-tojson
sumber
contoh untuk digunakan:
your_object1.txt:
your_object2.txt:
sumber
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.
sumber
sumber
Saya harap contoh ini akan membantu bagi semua orang yang bekerja pada array objek
sumber
Jika Anda tidak ingin bergabung () ke Obyek.
sumber
Jika Anda menginginkan metode minimalis untuk mengonversi variabel menjadi string untuk situasi tipe ekspresi inline,
''+variablename
adalah 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 inginJSON.stringify
jawaban Gary C. yang sangat tervotifikasi untuk pertanyaan yang diposting, yang dapat Anda baca di Jaringan Pengembang Mozilla di tautan dalam jawaban di atas .sumber