Pertanyaan Mengonversi objek menjadi string


Bagaimana cara mengonversi objek JavaScript menjadi string?

Contoh:

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

Keluaran:

Objek {a = 1, b = 2} // keluaran yang dapat dibaca dengan sangat bagus :)
  Item: [objek Object] // tidak tahu apa yang ada di dalamnya :(


793
2018-04-10 15:35


asal


Jawaban:


Saya akan merekomendasikan menggunakan JSON.stringify, yang mengonversi himpunan variabel dalam objek ke string JSON. Kebanyakan peramban modern mendukung metode ini secara asli, tetapi bagi yang tidak, Anda dapat menyertakan a Versi JS:

var obj = {
  name: 'myObj'
};

JSON.stringify(obj);

1110
2018-04-10 15:44



Gunakan fungsi javascript String ().

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

atau

JSON.stringify(yourobject)

.


82
2018-04-15 11:07



Tentu, untuk mengonversi 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:578 atau http://phpjs.org/functions/var_dump:604

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


80
2018-04-10 15:49



Menjaga sederhana dengan console, Anda bisa menggunakan koma, bukan a +. Itu + akan mencoba mengubah objek menjadi 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


63
2018-01-07 16:23



EDIT  Jangan gunakan jawaban ini karena tidak berfungsi di Internet Explorer. Menggunakan Gary Chambers larutan.

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

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

32
2018-04-10 15:40



Satu pilihan:

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

o is printed as a string

Pilihan lain (sebagai soktinpk ditunjukkan dalam komentar), dan lebih baik untuk konsol debugging IMO:

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

o is printed as an object, which you could drill down if you had more fields


28
2018-06-19 05:42



Tidak ada solusi di sini yang berhasil untuk saya. JSON.stringify tampaknya adalah apa yang dikatakan banyak orang, tetapi memotong fungsi dan tampaknya cukup rusak untuk beberapa objek dan array yang saya coba ketika mengujinya.

Saya membuat solusi sendiri yang bekerja di Chrome setidaknya. 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 berhasil melakukannya. Pengguna andrey menyarankan perbaikan sini dengan komentar:

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

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


20
2017-08-21 22:44



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


17
2017-08-14 12:53



Dalam kasus di mana Anda tahu objek hanya Boolean, Tanggal, String, nomor dll ... Fungsi String () javascript berfungsi dengan baik. Saya baru-baru ini menemukan ini berguna dalam menangani nilai-nilai yang berasal dari fungsi $ .each jquery.

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

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

Detail lebih lanjut di sini:

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


13
2017-07-11 04:12



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

13
2018-05-08 12:06