JS nesnesini JSON dizesine dönüştürme


1244

Ben JS ile bir nesne tanımladıysanız:

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

Nesneyi JSON'a nasıl dönüştürebilirim? Çıktı dizesi şöyle olmalıdır:

'{"name":"binchen"}'

63
JSON.stringify()aradığınız yöntem.
Gowtham Gopalakrishnan

10
Her zaman ilk öğrenmeniz gereken şeyler vardır.
Egan Wolf

Yanıtlar:


1922

Mevcut tüm tarayıcıların yerleşik JSON desteği vardır. IE6 / 7 gibi tarih öncesi tarayıcılarla uğraşmadığınız sürece bunu kolayca yapabilirsiniz:

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


5
çalışmak için bu komut dosyasını indirinJSON.stringify(j);
AabinGunz

2
Düğüm aynı motoru kullandığından düğümler üzerinde çalışın
georgelviv

26
Bu cevap IE9 yayınlanmadan bir yıl önce yayınlandı, bu yüzden IE8 gerçekten modern bir tarayıcıydı ya da en azından mevcut en yeni IE idi.
Andris

JSON.stringify iç içe nesneleri dönüştürmez. Bunun için herhangi bir çözüm .. ??
Ritesh

9
Daha okunabilir json dizgisine ihtiyacınız varsavar formattedJSON = JSON.stringify(j, null, 2);
Jacek Gzel

110

İle json2.js veya çoğu modern tarayıcıda yerli JSON.stringify()bulundu .

   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.

6
Biraz daha netlik için: replacer olduğunu hala kullanmak istiyorsanız eğer öyleyse, isteğe bağlı spacesen koymak arg nulliçin replacer. Bu işlevi güzel baskı için kullanmakla ilgileniyorsanız, bu yanıtı da yararlı buldum: stackoverflow.com/a/7220510/857209
Glenn Lawrence

34

Thomas Frank tarafından güncellenmiş / daha iyi bir şekilde göz atın:

Güncelleme 17 Mayıs 2008: toObject yöntemine küçük dezenfektan eklendi. Artık toObject (), içinde herhangi bir kötü amaçlı kod bulursa dizeyi değerlendirmez (). Daha da fazla güvenlik için: includeFunctions bayrağını true değerine ayarlamayın.

JSON konseptinin babası Douglas Crockford, JavaScript için ilk dizgilerden birini yazdı. Daha sonra Trim Path'dan Steve Yen, bir süredir kullandığım güzel bir geliştirilmiş versiyon yazdı. Steve'in versiyonundaki değişikliklerim seninle paylaşmak istiyorum. Temelde onlar stringifier yapmak benim dileği kaynaklandı:

  • döngüsel referansları işleme ve geri yükleme
  • işlevler / yöntemler için JavaScript kodunu ekleyin (isteğe bağlı olarak)
  • gerekirse nesne üyelerini Object.prototype'den hariç tutun.

23

JSON nesnesini String'e dönüştürmek için JSON.stringify () yöntemini kullanabilirsiniz.

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

Ters işlem için JSON String'i JSON Object'e dönüştürmek için JSON.parse () yöntemini kullanabilirsiniz.


Ters işlemi eklediğiniz için teşekkür ederiz.
David Lavieri

12

AçısalJS

angular.toJson(obj, pretty);

obj: JSON'a serileştirilecek girdi.

pretty (isteğe bağlı):
true değerine ayarlanırsa, JSON çıktısında yeni satırlar ve boşluk bulunur. Bir tamsayıya ayarlanırsa, JSON çıktısı girinti başına bu kadar boşluk içerecektir.

(varsayılan: 2)


12

JSON.stringify(j, null, 4) Eğer güzelleştirme gerekiyorsa size JSON güzelleştirilmiş verecek

İkinci parametre ikame edicidir. Dizgi yaparken belirli anahtar değerlerini filtreleyebileceğiniz Filtre olarak kullanılabilir. Null olarak ayarlanırsa, tüm anahtar / değer çiftlerini döndürür


10

AngularJS kullanıyorsanız, 'json' filtresi bunu yapmalıdır:

<span>{{someObject | json}}</span>

9

JSON.stringify bir Javascript nesnesini JSON metnine dönüştürür ve bu JSON metnini bir dizede saklar.

Dönüştürme Nesneden Dizeye

JSON.parse bir JSON metni dizesini bir Javascript nesnesine dönüştürür.

Dönüştürme bir String'ten Object'e

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

JSON String yapmak için aşağıdaki kullanılabilir.

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

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

Daha fazla bilgi için aşağıdaki bağlantıya bakabilirsiniz.

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


7

Stringify yönteminden garip olana kadar bunun için tanımlanmış bir özel

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

ÇIKTI

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

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


tırnak işareti gibi dizelerden
kaçmaz

1
Bu özel kod çok eksik. Dizileri, nesneleri ve özel karakterleri desteklemez. Örnek: json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "anahtar \" ile \\ special} chars ":" "} değeri {" arr ":" 1,2,3 "," obj ":" [object Object] ", \ key} chars ile" key "çıktısını verir:" value "} yanlış!
Manuel Romeiro

7

Ben stringize bellek tükenmeden sorunları yaşıyordu ve diğer çözümler işe yaramadı (en azından ben onları işe alamadım) hangi zaman bu iş parçacığı üzerinde tökezledi. Sayesinde Rohit Kumar sadece yinelerler benim çok büyük JSON nesnesi aracılığıyla I çökmesini durdurmak için

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 Büyük bir nesne varsa haricinde size (Bu konuya diğer kez söz gibi) dize Temsilciliği'ne verecek, bu da çalışma gerekir - sadece emin ihtiyaçlarınıza göre inşa yapmak - Ben diziden daha ada sahip gerekli


5

Woking ... Kullanımı kolay

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

Teşekkürler


3

böyle yerel stringify işlevini kullanabilirsiniz

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

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

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


3

dize biçiminde json özellik değeri almak istiyorsanız aşağıdaki yolu kullanın

var i = {"x":1}

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

var k = JSON.stringify(i);

console.log(j);

"1"

console.log(k);

'{"x":1}'

3

Düğüm JS'sinde hata ayıklamak için util.inspect () kullanabilirsiniz . Dairesel referanslarla daha iyi çalışır.

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

3

Mevcut JSON değiştirmeleri benim için çok fazla, bu yüzden kendi fonksiyonumu yazdım. Bu işe yarıyor gibi görünüyor, ama birkaç projeyi kaçırmış olabilirim (bu benim projemde gerçekleşmez). Ve muhtemelen önceden var olan herhangi bir nesne için çalışmaz, sadece kendi kendine yapılan veriler için.

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

2
So in order to convert a js object to JSON String: 

Bir nesneyi dizeye dönüştürmek için kullanılan basit sözdizimi

JSON.stringify(value)

Tam sözdizimi şöyledir: JSON.stringify (değer [, replacer [, space]])

Bazı basit örneklere bakalım. Tüm dizenin çift tırnak işareti aldığını ve dizgideki tüm verilerin gerekirse kaçtığını unutmayın.

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"}"*/

2
Kodunuzun kısa bir açıklamasını yapabilmeniz harika olurdu.
jonny

Bu soruya bir cevap sağlamaz. Yeterli bir üne sahip olduğunuzda , herhangi bir yazı hakkında yorum yapabilirsiniz ; bunun yerine askerden açıklama gerektirmeyen cevaplar verin . - Şu kaynaktan
Rafael

Cevabımı düzenledim, @Rafael ve @ jonny'yi işaret ettiğiniz için çok teşekkür ederim.
Rahul Choudhary

1

Sadece JSON.stringifybu tür dönüşümleri yapmak için kullanın - ancak undefineddeğeri olan alanların json'a dahil edilmeyeceğini unutmayın

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

var s=JSON.stringify(j);

console.log(s);

Alan rememberjson çıkışından 'kaybolur'


Az önce günümü kurtardın. Nesnemi kaydedemedim. tanımlanmamış değeri olan alanların json'a dahil edilmeyeceği anahtar sorunumu çözdü!
Mohammad Ghonchesefidi

0

JSON nesnesini String'e dönüştürmek için JSON.stringify () yöntemini kullanabilirsiniz.

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

Bu dizeyi tekrar json nesnesine dönüştürmek için JSON.parse () yöntemini kullanabilirsiniz.


0

kullanım JSON.stringify(param1, param2, param3);

Nedir: -

param1 -> JSON birimine dönüştürülecek değer

param2 -> fonksiyonunu kendi tarzınızda dizgi yapmak. Alternatif olarak, nesnelerin nihai JSON'a dahil edilmesi gereken beyaz bir liste görevi görür.

param3 -> A Eklenecek beyaz alan sayısını gösteren Sayı veri türü. İzin verilen maks. 10'dur.


0

convert str => obj

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

const onePLusObj = JSON.parse (onePlusStr);

convert obj => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

JSON'daki JSON ayrıştırma referansları:
JSON.parse (): click
JSON.stringify (): click


Daha fazla bilgi verebilir misiniz? Referanslar vb
Nodejs-nerd

JSON Kaynaklar JS ayrıştırma: JSON.parse (): w3schools.com/js/js_json_parse.asp JSON.stringify (): w3schools.com/js/js_json_stringify.asp
yash

teşekkürler, bunu dahil etmek için cevabınızı düzenleyebilir misiniz
Nodejs-nerd

0

Kullanımı çok kolay bir yöntemdir, ancak sürümde kullanmayın (olası uyumluluk sorunları nedeniyle).

Yanınızda test etmek için harika.

Object.prototype.toSource()

//Usage:
obj.toSource();

0

Stringify işlevini kullanma

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

var j_json = JSON.stringify(j);

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

Mutlu kodlama !!!


0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // dize biçiminde dönüştürmek istediğiniz nesneyi geçirin


-1

Bunu kullan,

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

-24

bir json dizeniz varsa ve [] ile sarılmamışsa, önce onu sarın

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

VEYA

var jsonobj = eval('(' + str + ')');
console.log(jsonobj);

OP diğer tarafa gitmeye çalışıyor. Sorunuz bir JSON dizesine sahip olduğu ve bunu bir nesne olarak almak istediği tersi duruma yanıt verir.
Joshua Snider

1
soruya ters bir şey yaptınız .. JSON.stringfy () işlevini kullanmalısınız
Hardik Patel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.