Konwertuj obiekt JS na ciąg JSON


1244

Jeśli zdefiniowałem obiekt w JS za pomocą:

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

Jak przekonwertować obiekt na JSON? Łańcuch wyjściowy powinien być:

'{"name":"binchen"}'

63
JSON.stringify()jest metodą, której szukasz.
Gowtham Gopalakrishnan

10
Zawsze musisz po raz pierwszy się tego nauczyć.
Egan Wolf

Odpowiedzi:


1922

Wszystkie obecne przeglądarki mają wbudowaną obsługę JSON. Tak długo, jak nie masz do czynienia z przeglądarkami prehistorycznymi, takimi jak IE6 / 7, możesz to zrobić tak łatwo:

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


5
pobierz ten skrypt , JSON.stringify(j);aby działać
AabinGunz

2
Pracuj na nodejs, ponieważ węzeł używa tego samego silnika
georgelviv

26
Ta odpowiedź została opublikowana na rok przed wydaniem IE9, więc w momencie pisania IE8 była rzeczywiście nowoczesną przeglądarką, a przynajmniej najnowszą dostępną IE.
Andris,

JSON.stringify nie przekształca zagnieżdżonych obiektów. Wszelkie rozwiązanie tego problemu?
Ritesh

9
Jeśli potrzebujesz bardziej czytelnego ciągu json, możesz użyć parametru spacji, takiego jakvar formattedJSON = JSON.stringify(j, null, 2);
Jacek Gzel

110

Dzięki JSON.stringify()znaleźć w json2.js lub rodzimy w większości nowoczesnych przeglądarek.

   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
Dla nieco większej jasności: replacer jest opcjonalne, więc jeśli chcesz nadal używać spaceargumentu można umieścić nullna replacer. Jeśli jesteś zainteresowany wykorzystaniem tej funkcji do ładnego drukowania, ta odpowiedź jest również przydatna: stackoverflow.com/a/7220510/857209
Glenn Lawrence

34

Sprawdź zaktualizowany / lepszy sposób autorstwa Thomasa Franka:

Aktualizacja 17 maja 2008: Dodano mały środek dezynfekujący do metody toObject. Teraz toObject () nie będzie ewaluować () ciągu, jeśli znajdzie w nim szkodliwy kod. Dla jeszcze większego bezpieczeństwa: Nie ustawiaj flagi includeFunctions na true.

Douglas Crockford, ojciec koncepcji JSON, napisał jeden z pierwszych strunikatorów dla JavaScript. Później Steve Yen z Trim Path napisał fajną, ulepszoną wersję, z której korzystałem od jakiegoś czasu. To moje zmiany w wersji Steve'a, którymi chciałbym się z tobą podzielić. Zasadniczo wynikały one z mojego pragnienia, aby utworzyć ciągnik:

  • obsługiwać i przywracać cykliczne odniesienia
  • dołącz kod JavaScript dla funkcji / metod (jako opcja)
  • w razie potrzeby wyklucz elementy składowe obiektu z Object.prototype.

23

Możesz użyć metody JSON.stringify () do konwersji obiektu JSON na String.

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

W przypadku procesu odwrotnego można użyć metody JSON.parse () do konwersji ciągu JSON na obiekt JSON.


Dziękujemy za dodanie procesu odwrotnego.
David Lavieri

12

W angularJS

angular.toJson(obj, pretty);

obj: Dane wejściowe do serializacji do JSON.

pretty (opcjonalnie):
Jeśli ustawiona na wartość true, dane wyjściowe JSON będą zawierać znaki nowej linii i białe znaki. Jeśli ustawione na liczbę całkowitą, wyjście JSON będzie zawierało tyle spacji na wcięcie.

(domyślnie: 2)


12

JSON.stringify(j, null, 4) dałby upiększony JSON na wypadek, gdybyś potrzebował również upiększenia

Drugi parametr to zamiennik. Można go użyć jako filtru, w którym można odfiltrować niektóre kluczowe wartości podczas tworzenia łańcucha. Ustawienie wartości null spowoduje zwrócenie wszystkich par wartości klucza


10

Jeśli używasz AngularJS, powinien to zrobić filtr „json”:

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

9

JSON.stringify zamienia obiekt Javascript w tekst JSON i przechowuje ten tekst JSON w ciągu.

Konwersja jest obiektem na ciąg

JSON.parse zamienia ciąg tekstu JSON w obiekt JavaScript.

Konwersja jest ciągiem obiektowym

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

aby był to ciąg JSON, można użyć następującego.

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

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

Aby uzyskać więcej informacji, zapoznaj się z tym linkiem poniżej.

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


7

Jeden niestandardowy zdefiniowany do tego, dopóki nie zrobimy dziwnej z metody 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);

WYNIK

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

NA ŻYWO http://jsfiddle.net/mailmerohit5/y78zum6v/


nie
unika

1
Ten niestandardowy kod jest bardzo niekompletny. Nie obsługuje tablic, obiektów i znaków specjalnych. Przykład: json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "key \" with \\ special} chars ":" wartość "} wyświetli {" arr ":" 1,2,3 "," obj ":" [obiekt Object] "," klucz "z \ special} chars": "wartość"}, co jest nieprawidłowe!
Manuel Romeiro

7

Miałem problemy z brakiem pamięci stringify i inne rozwiązania nie działały (przynajmniej nie mogłem ich zmusić do działania), kiedy natknąłem się na ten wątek. Dzięki Rohit Kumar po prostu iteruję przez mój bardzo duży obiekt JSON, aby zatrzymać awarię

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 dałby ci reprezentację ciągu (tak jak wspomniano wcześniej w tym wątku), chyba że masz duży obiekt, to powinno również działać - po prostu upewnij się, że zbudowałeś go do swoich potrzeb - Potrzebowałem go, aby miał nazwę niż tablica


5

Woking ... Łatwy w użyciu

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

Dzięki


3

możesz użyć natywnej funkcji stringify w ten sposób

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

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

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


3

jeśli chcesz uzyskać wartość właściwości json w postaci łańcucha, skorzystaj z następującego sposobu

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

Do debugowania w Node JS można użyć funkcji util.inspect () . Działa lepiej z referencjami cyklicznymi.

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

3

Istniejące zamienniki JSON były dla mnie zbyt wiele, więc napisałem własną funkcję. Wydaje się, że to działa, ale mogłem przegapić kilka przypadków krawędzi (które nie występują w moim projekcie). I prawdopodobnie nie będzie działać dla żadnych wcześniej istniejących obiektów, tylko dla danych utworzonych samodzielnie.

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: 

Prosta składnia do konwersji obiektu na ciąg znaków to

JSON.stringify(value)

Pełna składnia to: JSON.stringify (wartość [, zamiennik [, spacja]])

Zobaczmy kilka prostych przykładów. Zauważ, że cały ciąg otrzymuje podwójne cudzysłowy, a wszystkie dane w ciągu są usuwane w razie potrzeby.

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
Byłoby wspaniale, gdybyś mógł podać krótkie wyjaśnienie swojego kodu.
jonny

To nie daje odpowiedzi na pytanie. Gdy zdobędziesz wystarczającą reputację , będziesz mógł komentować dowolny post ; zamiast tego podaj odpowiedzi, które nie wymagają wyjaśnienia od pytającego . - Z recenzji
Rafael

Zredagowałem swoją odpowiedź, dziękuję bardzo za wskazanie @Rafael i @ jonny.
Rahul Choudhary

1

Po prostu użyj, JSON.stringifyaby wykonać taką konwersję - pamiętaj jednak, że pola o undefinedwartości nie zostaną uwzględnione w json

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

var s=JSON.stringify(j);

console.log(s);

Pole remember„znikają” z wyjścia json


Właśnie uratowałeś mi dzień. Nie byłem w stanie zapisać mojego obiektu. klucz, że pola o nieokreślonej wartości nie zostaną uwzględnione w json rozwiązał mój problem!
Mohammad Ghonchesefidi

0

Możesz użyć metody JSON.stringify () do konwersji obiektu JSON na String.

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

Aby przekonwertować ten ciąg znaków z powrotem na obiekt json, można użyć metody JSON.parse ().


0

posługiwać się JSON.stringify(param1, param2, param3);

Co jest: -

param1 -> wartość do konwersji na JSON

param2 -> funkcja do strunizacji na swój własny sposób. Alternatywnie, służy jako biała lista, dla której obiekty muszą być zawarte w końcowym JSON.

param3 -> Typ danych Number wskazujący liczbę białych znaków do dodania. Dozwolone są maksymalnie 10.


0

konwersja str => obj

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

const onePLusObj = JSON.parse (onePlusStr);

konwersja obj => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

Odwołania do analizy JSON w JS:
JSON.parse (): kliknij
JSON.stringify (): kliknij


Czy możesz podać więcej informacji? Referencje itp.
Nodejs-nerd

Odniesienia JSON przetwarzania w JS: JSON.parse (): w3schools.com/js/js_json_parse.asp JSON.stringify (): w3schools.com/js/js_json_stringify.asp
YASH

dzięki, czy możesz edytować swoją odpowiedź, aby uwzględnić to
Nodejs-nerd

0

Bardzo łatwa w użyciu metoda, ale nie używaj jej w wersji (z powodu możliwych problemów ze zgodnością).

Idealne do testowania po twojej stronie.

Object.prototype.toSource()

//Usage:
obj.toSource();

0

Użyj funkcji stringify

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

var j_json = JSON.stringify(j);

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

Miłego kodowania !!!


0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // przekaż obiekt, który chcesz przekonwertować w formacie łańcucha


-1

Użyj tego,

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

-24

jeśli masz ciąg json i nie jest on owinięty [], to najpierw go zawiń

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

LUB

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

OP próbuje iść w drugą stronę. Twoje pytanie odpowiada odwrotnej sprawie, w której ma on ciąg JSON i chce uzyskać go jako obiekt.
Joshua Snider

1
zrobiłeś coś odwrotnego do pytania ... powinieneś użyć funkcji JSON.stringfy ()
Hardik Patel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.