Converti l'oggetto JS in stringa JSON


1245

Se avessi definito un oggetto in JS con:

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

Come posso convertire l'oggetto in JSON? La stringa di output dovrebbe essere:

'{"name":"binchen"}'

63
JSON.stringify()è il metodo che stai cercando.
Gowtham Gopalakrishnan,

10
C'è sempre quella prima volta che devi impararlo.
Egan Wolf,

Risposte:


1923

Tutti i browser attuali hanno il supporto nativo JSON integrato. Quindi, purché non si tratti di browser preistorici come IE6 / 7, è possibile farlo altrettanto facilmente:

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


5
scarica questo script per JSON.stringify(j);funzionare
AabinGunz

2
Lavora su nodejs perché il nodo usa lo stesso motore
georgelviv,

26
Questa risposta è stata pubblicata un anno prima del rilascio di IE9, quindi al momento della stesura di IE8 era davvero un browser moderno, o almeno era il più recente IE disponibile.
Andris,

JSON.stringify non converte gli oggetti nidificati. Qualsiasi soluzione per quello .. ??
Ritesh,

9
Se hai bisogno di una stringa json più leggibile Puoi usare parametri dello spazio comevar formattedJSON = JSON.stringify(j, null, 2);
Jacek Gzel,

110

Con JSON.stringify()trovato in json2.js o nativo nella maggior parte dei browser moderni.

   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
Per un po 'più di chiarezza: replacer è opzionale, quindi se si desidera utilizzare ancora l' spacearg si mette nullper replacer. Se sei interessato a utilizzare questa funzione per la stampa carina, ho trovato utile anche questa risposta: stackoverflow.com/a/7220510/857209
Glenn Lawrence,

34

Scopri il modo migliore / aggiornato di Thomas Frank:

Aggiornamento del 17 maggio 2008: piccolo disinfettante aggiunto al metodo toObject. Ora toObject () non eval () la stringa se trova del codice dannoso al suo interno. Per una sicurezza ancora maggiore: non impostare il flag includeFunctions su true.

Douglas Crockford, padre del concetto JSON, scrisse uno dei primi stringificatori per JavaScript. Più tardi Steve Yen a Trim Path scrisse una versione migliorata che ho usato per un po 'di tempo. Sono le mie modifiche alla versione di Steve che vorrei condividere con te. Fondamentalmente derivavano dal mio desiderio di creare il stringificatore:

  • gestire e ripristinare riferimenti ciclici
  • includere il codice JavaScript per funzioni / metodi (come opzione)
  • escludere i membri dell'oggetto da Object.prototype, se necessario.

23

È possibile utilizzare il metodo JSON.stringify () per convertire l'oggetto JSON in String.

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

Per il processo inverso, è possibile utilizzare il metodo JSON.parse () per convertire la stringa JSON in oggetto JSON.


Grazie per aver aggiunto il processo inverso.
David Lavieri,

12

In angularJS

angular.toJson(obj, pretty);

obj: input da serializzare in JSON.

pretty (opzionale):
se impostato su true, l'output JSON conterrà newline e spazi bianchi. Se impostato su un numero intero, l'output JSON conterrà tanti spazi per rientro.

(impostazione predefinita: 2)


12

JSON.stringify(j, null, 4) ti darebbe abbellito JSON nel caso abbiate bisogno anche di abbellimento

Il secondo parametro è replacer. Può essere utilizzato come filtro in cui è possibile filtrare determinati valori chiave durante la stringa. Se impostato su null restituirà tutte le coppie di valori chiave


10

Se stai usando AngularJS, il filtro 'json' dovrebbe farlo:

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

9

JSON.stringify trasforma un oggetto Javascript in testo JSON e memorizza il testo JSON in una stringa.

La conversione è un oggetto in stringa

JSON.parse trasforma una stringa di testo JSON in un oggetto Javascript.

La conversione è una stringa in oggetto

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

per renderlo possibile utilizzare una stringa JSON seguente.

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

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

Per maggiori informazioni puoi consultare questo link qui sotto.

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


7

Una definizione definita per questo, fino a quando non facciamo strano dal metodo 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);

PRODUZIONE

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

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


non sfugge alle stringhe con virgolette come: "a \" in una stringa "
alphakevin

1
Quel codice personalizzato è molto incompleto. Non supporta matrici, oggetti e caratteri speciali. Esempio: the json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "key \" con \\ special} chars ":" valore "} produrrà {" arr ":" 1,2,3 "," obj ":" [oggetto oggetto] "," chiave "con \ speciali} caratteri": "valore"} che è sbagliato!
Manuel Romeiro,

7

Avevo problemi con la memoria a corto di stringify e altre soluzioni non sembravano funzionare (almeno non riuscivo a farle funzionare) che è quando mi sono imbattuto in questo thread. Grazie a Rohit Kumar ho appena passato il mio oggetto JSON molto grande per impedirne l'arresto anomalo

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 ti darebbe la tua rappresentazione di stringa (proprio come menzionato altre volte in questo thread) tranne se hai un oggetto di grandi dimensioni, dovrebbe funzionare anche questo - assicurati solo di costruirlo per adattarlo alle tue esigenze - Ne avevo bisogno per avere un nome che array


5

Woking ... Facile da usare

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

Grazie


3

puoi usare la funzione stringify nativa in questo modo

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

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

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


3

se si desidera ottenere il valore delle proprietà json in formato stringa, utilizzare il seguente modo

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

Per il debug in Node JS è possibile utilizzare util.inspect () . Funziona meglio con riferimenti circolari.

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

3

Le sostituzioni JSON esistenti erano troppo per me, quindi ho scritto la mia funzione. Questo sembra funzionare, ma potrei aver perso diversi casi limite (che non si verificano nel mio progetto). E probabilmente non funzionerà per oggetti preesistenti, ma solo per dati fatti da sé.

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: 

La sintassi semplice per convertire un oggetto in una stringa è

JSON.stringify(value)

La sintassi completa è: JSON.stringify (value [, replacer [, space]])

Vediamo alcuni semplici esempi. Si noti che l'intera stringa ottiene virgolette doppie e tutti i dati nella stringa vengono salvati se necessario.

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
Sarebbe bello se potessi fornire una breve spiegazione del tuo codice.
jonny

Questo non fornisce una risposta alla domanda. Una volta che hai una reputazione sufficiente , sarai in grado di commentare qualsiasi post ; fornire invece risposte che non richiedono chiarimenti da parte del richiedente . - Dalla recensione
Rafael,

Ho modificato la mia risposta, grazie mille per aver segnalato @Rafael e @ jonny.
Rahul Choudhary,

1

Basta usare JSON.stringifyper fare tale conversione - tuttavia ricorda che i campi che hanno undefinedvalore non saranno inclusi in JSON

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

var s=JSON.stringify(j);

console.log(s);

Il campo remember"scompare" dall'output json


Mi hai appena salvato la giornata. Non sono stato in grado di salvare il mio oggetto. la chiave che i campi che hanno un valore indefinito non saranno inclusi in json ha risolto il mio problema!
Mohammad Ghonchesefidi

0

È possibile utilizzare il metodo JSON.stringify () per convertire l'oggetto JSON in String.

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

Per riconvertire questa stringa in oggetto json, è possibile utilizzare il metodo JSON.parse ().


0

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

Cosa è: -

param1 -> valore da convertire in JSON

param2 -> funzione per stringere a modo tuo. In alternativa, serve come una lista bianca per la quale gli oggetti devono essere inclusi nel JSON finale.

param3 -> Un tipo di dati numerico che indica il numero di spazi bianchi da aggiungere. Il numero massimo consentito è 10.


0

converti str => obj

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

const onePLusObj = JSON.parse (onePlusStr);

converti obj => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

Riferimenti di analisi JSON in JS:
JSON.parse (): fare clic su
JSON.stringify (): fare clic


Potete fornire maggiori informazioni? Riferimenti ecc.
Nodejs-nerd

Riferimenti di analisi JSON in JS: JSON.parse (): w3schools.com/js/js_json_parse.asp JSON.stringify (): w3schools.com/js/js_json_stringify.asp
yash

grazie, puoi modificare la tua risposta per includere questo
Nodejs-nerd il

0

Metodo molto facile da usare, ma non utilizzarlo nella versione (a causa di possibili problemi di compatibilità).

Ottimo per i test dalla tua parte.

Object.prototype.toSource()

//Usage:
obj.toSource();

0

Usa la funzione stringify

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

var j_json = JSON.stringify(j);

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

Buona codifica !!!


0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // passa l'oggetto che vuoi convertire in formato stringa


-1

Usa questo,

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

-24

se hai una stringa json e non è racchiusa con [], prima avvolgila

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

O

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

L'OP sta cercando di andare dall'altra parte. La tua domanda risponde al caso inverso in cui ha una stringa JSON e vuole ottenerla come oggetto.
Joshua Snider,

1
hai fatto la cosa inversa alla domanda .. dovresti usare la funzione JSON.stringfy ()
Hardik Patel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.