Konversi objek JS ke string JSON

1245

Jika saya mendefinisikan objek dalam JS dengan:

var j={"name":"binchen"};

Bagaimana saya bisa mengubah objek menjadi JSON? String output harus:

'{"name":"binchen"}'
Bin Chen
sumber
63
JSON.stringify()adalah metode yang Anda cari.
Gowtham Gopalakrishnan
10
Selalu ada saat pertama kali ketika Anda harus mempelajarinya.
Egan Wolf

Jawaban:

1923

Semua browser saat ini memiliki dukungan JSON bawaan. Jadi, selama Anda tidak berurusan dengan browser prasejarah seperti IE6 / 7, Anda dapat melakukannya semudah itu:

var j = {
  "name": "binchen"
};
console.log(JSON.stringify(j));

Andris
sumber
5
unduh skrip ini agar JSON.stringify(j);bisa berfungsi
AabinGunz
2
Bekerja pada nodejs karena node menggunakan mesin yang sama
georgelviv
26
Jawaban ini diposting setahun sebelum IE9 dirilis sehingga pada saat penulisan IE8 memang merupakan browser modern, atau setidaknya itu adalah IE terbaru yang tersedia.
Andris
JSON.stringify tidak mengonversi objek bersarang. Ada solusi untuk itu .. ??
Ritesh
9
Jika Anda membutuhkan string json yang lebih mudah dibaca, Anda dapat menggunakan parameter ruang sepertivar formattedJSON = JSON.stringify(j, null, 2);
Jacek Gzel
110

Dengan JSON.stringify()ditemukan di json2.js atau asli di sebagian besar browser modern.

   JSON.stringify(value, replacer, space)
        value       any JavaScript value, usually an object or array.

       replacer    an optional parameter that determines how object
                    values are stringified for objects. It can be a
                    function or an array of strings.

       space       an optional parameter that specifies the indentation
                    of nested structures. If it is omitted, the text will
                    be packed without extra whitespace. If it is a number,
                    it will specify the number of spaces to indent at each
                    level. If it is a string (such as '\t' or ' '),
                    it contains the characters used to indent at each level.

       This method produces a JSON text from a JavaScript value.
Ignacio Vazquez-Abrams
sumber
6
Untuk sedikit lebih jelas: replacer adalah opsional, jadi jika Anda ingin tetap menggunakan spacearg Anda meletakkan nulluntuk replacer. Jika Anda tertarik menggunakan fungsi ini untuk mencetak cantik, saya menemukan jawaban ini juga berguna: stackoverflow.com/a/7220510/857209
Glenn Lawrence
34

Lihat cara yang diperbarui / lebih baik oleh Thomas Frank:

Pembaruan 17 Mei 2008: Pembersih kecil ditambahkan ke metode toObject. Sekarang toObject () tidak akan eval () string jika ia menemukan kode berbahaya di dalamnya. Untuk keamanan lebih: Jangan setel flag includeFunctions menjadi true.

Douglas Crockford, bapak konsep JSON, menulis salah satu pengali pertama untuk JavaScript. Kemudian Steve Yen di Trim Path menulis versi perbaikan yang bagus yang telah saya gunakan selama beberapa waktu. Ini perubahan saya ke versi Steve yang ingin saya bagikan dengan Anda. Pada dasarnya mereka berasal dari keinginan saya untuk membuat stringifier:

  • menangani dan mengembalikan referensi siklus
  • termasuk kode JavaScript untuk fungsi / metode (sebagai opsi)
  • kecualikan anggota objek dari Object.prototype jika diperlukan.
Sarfraz
sumber
23

Anda dapat menggunakan metode JSON.stringify () untuk mengubah objek JSON menjadi String.

var j={"name":"binchen"};
JSON.stringify(j)

Untuk proses sebaliknya, Anda bisa menggunakan metode JSON.parse () untuk mengubah String JSON menjadi Objek JSON.

Aravindan Venkatesan
sumber
Terima kasih telah menambahkan proses sebaliknya.
David Lavieri
12

Di angularJS

angular.toJson(obj, pretty);

obj: Input akan diserialisasi ke JSON.

cantik (opsional):
Jika disetel ke true, output JSON akan berisi baris baru dan spasi putih. Jika diatur ke integer, output JSON akan berisi banyak spasi per indentasi.

(standar: 2)

Nazrul Islam
sumber
12

JSON.stringify(j, null, 4) akan memberi Anda JSON yang dipercantik jika Anda membutuhkan kecantikan juga

Parameter kedua adalah replacer. Ini dapat digunakan sebagai Filter di mana Anda dapat memfilter nilai kunci tertentu saat pengetatan. Jika disetel ke nol, itu akan mengembalikan semua pasangan nilai kunci

Vignesh Murugan
sumber
10

Jika Anda menggunakan AngularJS, filter 'json' harus melakukannya:

<span>{{someObject | json}}</span>
Ariel Cabib
sumber
9

JSON.stringify mengubah objek Javascript menjadi teks JSON dan menyimpan teks JSON itu dalam sebuah string.

Konversi adalah Object to String

JSON.parse mengubah string teks JSON menjadi objek Javascript.

Konversi adalah String to Object

var j={"name":"binchen"};

untuk membuatnya menjadi String JSON berikut ini dapat digunakan.

JSON.stringify({"key":"value"});

JSON.stringify({"name":"binchen"});

Untuk info lebih lanjut Anda bisa merujuk ke tautan ini di bawah.

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

Dulith De Costa
sumber
7

Satu custom didefinisikan untuk ini, sampai kita melakukan aneh dari metode stringify

var j={"name":"binchen","class":"awesome"};
var dq='"';
var json="{";
var last=Object.keys(j).length;
var count=0;
for(x in j)
{
json += dq+x+dq+":"+dq+j[x]+dq;
count++;
if(count<last)
   json +=",";
}
json+="}";
document.write(json);

KELUARAN

{"name":"binchen","class":"awesome"}

LANGSUNG http://jsfiddle.net/mailmerohit5/y78zum6v/

Rohit Kumar
sumber
tidak lepas dari string dengan tanda kutip seperti: "a \" dalam string "
alphakevin
1
Kode khusus itu sangat tidak lengkap. Tidak mendukung array, objek, dan karakter khusus. Contoh: json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "key \" with \\ special} chars ":" value "} akan menampilkan {" arr ":" 1,2,3 "," obj ":" [object object] "," key "dengan \ special} chars": "value"} itu salah!
Manuel Romeiro
7

Saya mengalami masalah dengan penguraian kehabisan memori dan solusi lain tampaknya tidak berfungsi (setidaknya saya tidak bisa membuatnya bekerja) yang saat itu saya tersandung pada utas ini. Terima kasih kepada Rohit Kumar, saya hanya mengulangi objek JSON saya yang sangat besar untuk menghentikannya agar tidak menabrak

var j = MyObject;
var myObjectStringify = "{\"MyObject\":[";
var last = j.length
var count = 0;
for (x in j) {
    MyObjectStringify += JSON.stringify(j[x]);
    count++;
    if (count < last)
        MyObjectStringify += ",";
}
MyObjectStringify += "]}";

MyObjectStringify akan memberi Anda representasi string Anda (seperti yang disebutkan lain kali di utas ini) kecuali jika Anda memiliki objek besar, ini juga akan berfungsi - pastikan Anda membangunnya agar sesuai dengan kebutuhan Anda - saya membutuhkannya untuk memiliki nama daripada array

Sam
sumber
5

Bangun ... Mudah digunakan

$("form").submit(function(evt){
  evt.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvert = JSON.stringify(formData);  // Convert to json
});

Terima kasih

Subroto Biswas
sumber
3

Anda dapat menggunakan fungsi stringify asli seperti ini

const j={ "name": "binchen" }

/** convert json to string */
const jsonString = JSON.stringify(j)

console.log(jsonString) // {"name":"binchen"}

Alongkorn Chetasumon
sumber
3

jika Anda ingin mendapatkan nilai properti json dalam format string gunakan cara berikut

var i = {"x":1}

var j = JSON.stringify(i.x);

var k = JSON.stringify(i);

console.log(j);

"1"

console.log(k);

'{"x":1}'
KARTHIKEYAN.A
sumber
3

Untuk debugging di Node JS Anda dapat menggunakan util.inspect () . Ini bekerja lebih baik dengan referensi melingkar.

var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));
Pavel Netesa
sumber
3

JSON yang ada menggantikan di mana terlalu banyak untuk saya, jadi saya menulis fungsi saya sendiri. Ini tampaknya berhasil, tetapi saya mungkin telah melewatkan beberapa kasus tepi (yang tidak terjadi dalam proyek saya). Dan mungkin tidak akan berfungsi untuk objek yang sudah ada sebelumnya, hanya untuk data buatan sendiri.

function simpleJSONstringify(obj) {
    var prop, str, val,
        isArray = obj instanceof Array;

    if (typeof obj !== "object") return false;

    str = isArray ? "[" : "{";

    function quote(str) {
        if (typeof str !== "string") str = str.toString();
        return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"'
    }

    for (prop in obj) {
        if (!isArray) {
            // quote property
            str += quote(prop) + ": ";
        }

        // quote value
        val = obj[prop];
        str += typeof val === "object" ? simpleJSONstringify(val) : quote(val);
        str += ", ";
    }

    // Remove last colon, close bracket
    str = str.substr(0, str.length - 2)  + ( isArray ? "]" : "}" );

    return str;
}
Hauke
sumber
2
So in order to convert a js object to JSON String: 

Sintaks sederhana untuk mengonversi objek ke string adalah

JSON.stringify(value)

Sintaks lengkapnya adalah: JSON.stringify (nilai [, replacer [, spasi]])

Mari kita lihat beberapa contoh sederhana. Perhatikan bahwa seluruh string mendapat tanda kutip ganda dan semua data dalam string akan lolos jika diperlukan.

JSON.stringify("foo bar"); // ""foo bar""
JSON.stringify(["foo", "bar"]); // "["foo","bar"]"
JSON.stringify({}); // '{}'
JSON.stringify({'foo':true, 'baz':false}); /* " 
{"foo":true,"baz":false}" */



const obj = { "property1":"value1", "property2":"value2"};
const JSON_response = JSON.stringify(obj);
console.log(JSON_response);/*"{ "property1":"value1", 
"property2":"value2"}"*/
Rahul Choudhary
sumber
2
Akan lebih bagus jika Anda bisa memberikan penjelasan singkat tentang kode Anda.
Jonon
Ini tidak memberikan jawaban untuk pertanyaan itu. Setelah Anda memiliki reputasi yang cukup, Anda akan dapat mengomentari setiap pos ; alih-alih, berikan jawaban yang tidak memerlukan klarifikasi dari penanya . - Dari Ulasan
Rafael
Saya telah mengedit jawaban saya, terima kasih banyak untuk menunjukkan @ Rafael dan @ jonny.
Rahul Choudhary
1

Cukup gunakan JSON.stringifyuntuk melakukan konversi seperti itu - namun ingatlah bahwa bidang yang memiliki undefinednilai tidak akan dimasukkan ke json

var j={"name":"binchen", "remember":undefined, "age": null };

var s=JSON.stringify(j);

console.log(s);

Bidang remember'menghilang' dari output json

Kamil Kiełczewski
sumber
Anda baru saja menyelamatkan hari saya. Saya tidak dapat menyimpan objek saya. kunci bahwa bidang yang memiliki nilai yang tidak ditentukan tidak akan dimasukkan ke json memecahkan masalah saya!
Mohammad Ghonchesefidi
0

Anda dapat menggunakan metode JSON.stringify () untuk mengubah objek JSON menjadi String.

var j={"name":"hello world"};
JSON.stringify(j);

Untuk mengonversi string ini kembali ke objek json, Anda bisa menggunakan metode JSON.parse ().

realnikunj
sumber
0

menggunakan JSON.stringify(param1, param2, param3);

Apa yang: -

param1 -> nilai untuk dikonversi ke JSON

param2 -> berfungsi untuk merangkai dengan cara Anda sendiri. Atau, ini berfungsi sebagai daftar putih untuk objek yang perlu dimasukkan dalam JSON akhir.

param3 -> A Tipe data angka yang menunjukkan jumlah spasi putih untuk ditambahkan. Maks diizinkan adalah 10.

Deepak Agrawal
sumber
0

convert str => obj

const onePlusStr = '[{"brand": "oneplus"}, {"model": "7T"}]';

const onePLusObj = JSON.parse (onePlusStr);

convert obj => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

Referensi JSON parsing di JS:
JSON.parse (): klik
JSON.stringify (): klik

yash
sumber
Bisakah Anda memberikan informasi lebih lanjut? Referensi dll
Nodejs-nerd
Referensi JSON parsing dalam JS: JSON.parse (): w3schools.com/js/js_json_parse.asp JSON.stringify (): w3schools.com/js/js_json_stringify.asp
yash
terima kasih, dapatkah Anda mengedit jawaban Anda untuk menyertakan ini
Nodejs-nerd
0

Sangat mudah untuk menggunakan metode, tetapi jangan menggunakannya dalam rilis (karena kemungkinan masalah kompatibilitas).

Bagus untuk pengujian di sisi Anda.

Object.prototype.toSource()

//Usage:
obj.toSource();
Bodich
sumber
0

Gunakan fungsi stringify

var j = {
"name":"binchen"
};

var j_json = JSON.stringify(j);

console.log("j in json object format :", j_json);

Selamat coding !!!

Keinginan Kaleba
sumber
0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // meneruskan objek yang ingin Anda konversi dalam format string

Geetanshu Gulati
sumber
-1

Gunakan ini,

var j={"name":"binchen"};
 var myJSON = JSON.stringify(j);
MKR
sumber
-24

jika Anda memiliki string json dan tidak dibungkus dengan [] maka bungkus terlebih dahulu

var str = '{"city": "Tampa", "state": "Florida"}, {"city": "Charlotte", "state": "North Carolina"}';
str = '[' + str + ']';
var jsonobj = $.parseJSON(str);

ATAU

var jsonobj = eval('(' + str + ')');
console.log(jsonobj);
Bhaumik Mehta
sumber
OP sedang mencoba untuk pergi ke arah lain. Pertanyaan Anda menjawab kasus terbalik di mana ia memiliki string JSON dan ingin mendapatkannya sebagai objek.
Joshua Snider
1
Anda telah melakukan hal sebaliknya untuk dipertanyakan .. Anda harus menggunakan fungsi JSON.stringfy ()
Hardik Patel