JS 객체를 JSON 문자열로 변환


1244

JS에서 객체를 다음과 같이 정의한 경우 :

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

객체를 JSON으로 변환하려면 어떻게해야합니까? 출력 문자열은 다음과 같아야합니다.

'{"name":"binchen"}'

63
JSON.stringify()찾고있는 방법입니다.
Gowtham Gopalakrishnan 2016

10
항상 배워야 할 때가 항상 있습니다.
Egan Wolf

답변:


1922

모든 현재 브라우저에는 기본 JSON 지원 기능이 내장되어 있습니다. IE6 / 7과 같은 선사 시대 브라우저를 다루지 않는 한 다음과 같이 쉽게 수행 할 수 있습니다.

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


5
작동 하려면 이 스크립트 를 다운로드 하십시오JSON.stringify(j);
AabinGunz

2
nodejs에 대한 작업은 노드 사용 동일한 엔진 때문에
georgelviv

26
이 답변은 IE9가 출시되기 1 년 전에 게시되었으므로 IE8을 작성할 당시에는 실제로 최신 브라우저이거나 최소한 최신 IE였습니다.
Andris

JSON.stringify는 중첩 된 객체를 변환하지 않습니다. 그에 대한 모든 솔루션 .. ??
Ritesh

9
당신은 당신은 같은 공간 매개 변수를 사용할 수 있습니다 더 읽기 JSON 문자열이 필요한 경우var formattedJSON = JSON.stringify(j, null, 2);
제이 섹 Gzel

110

JSON.stringify()에서 발견 json2.js 또는 대부분의 최신 브라우저에서 기본.

   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
좀 더 명확하게하기 위해 : replacer 입니다 여전히 사용할 그렇다면, 선택 space당신이 넣어 인수 null에 대한을 replacer. 예쁘게 인쇄하기 위해이 기능을 사용하는 데 관심이 있다면이 답변도 유용하다는 것을 알았습니다. stackoverflow.com/a/7220510/857209
Glenn Lawrence

34

Thomas Frank가 업데이트 / 더 나은 방법을 확인하십시오.

2008 년 5 월 17 일 업데이트 : 소형 살균제가 toObject-method에 추가되었습니다. toObject ()는 악성 코드가 발견되면 문자열을 eval ()하지 않습니다.

JSON 개념의 아버지 인 Douglas Crockford는 JavaScript를위한 첫 번째 stringifier 중 하나를 작성했습니다. 나중에 Trim Path의 Steve Yen은 한동안 사용했던 멋진 개선 된 버전을 작성했습니다. 여러분과 공유하고 싶은 Steve 버전이 변경되었습니다. 기본적으로 그들은 stringifier를 만들고 싶다는 소망에서 비롯되었습니다.

  • 주기적 참조 처리 및 복원
  • 함수 / 메소드에 대한 JavaScript 코드 포함 (옵션)
  • 필요한 경우 Object.prototype에서 객체 멤버를 제외합니다.

23

JSON.stringify () 메서드를 사용 하여 JSON 객체를 String으로 변환 할 수 있습니다 .

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

역 프로세스의 경우 JSON.parse () 메서드를 사용 하여 JSON 문자열을 JSON 객체로 변환 할 수 있습니다 .


역 프로세스를 추가해 주셔서 감사합니다.
David Lavieri

12

angularJS에서

angular.toJson(obj, pretty);

obj : JSON으로 직렬화 할 입력입니다.

pretty (선택 사항) :
true로 설정하면 JSON 출력에 줄 바꿈 및 공백이 포함됩니다. 정수로 설정하면 JSON 출력에 들여 쓰기 당 많은 공간이 포함됩니다.

(기본값 : 2)


12

JSON.stringify(j, null, 4) 미화가 필요한 경우를 대비하여 미화 된 JSON을 제공합니다.

두 번째 매개 변수는 replacer입니다. 문자열화할 때 특정 키 값을 필터링 할 수있는 필터로 사용할 수 있습니다. null로 설정하면 모든 키 값 쌍을 반환합니다.


10

AngularJS를 사용하는 경우 'json'필터가 수행해야합니다.

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

9

JSON.stringify Javascript 객체를 JSON 텍스트로 바꾸고 해당 JSON 텍스트를 문자열에 저장합니다.

변환은 객체에서 문자열로

JSON.parse JSON 텍스트 문자열을 Javascript 객체로 변환합니다.

변환은 문자열에서 객체로

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

JSON 문자열을 다음과 같이 사용할 수 있습니다.

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

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

자세한 내용은 아래이 링크를 참조하십시오.

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


7

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

산출

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

라이브 http://jsfiddle.net/mailmerohit5/y78zum6v/


"a \"in a string "
alphakevin

1
해당 사용자 정의 코드는 매우 불완전합니다. 배열, 객체 및 특수 문자를 지원하지 않습니다. 예 : json { "arr": [ "1", "2", "3"], "obj": { "a": "b"}, "key \"with \\ special} chars ":" value "}는 {"arr ":"1,2,3 ","obj ":"[object Object] ","key "with \ special} chars": "value"}를 출력합니다.
Manuel Romeiro

7

나는 메모리 부족 문자열 화에 문제가 있었고 다른 솔루션이 작동하지 않는 것 같습니다 (적어도 작동시키지 못했습니다).이 스레드에서 우연히 발견되었습니다. Rohit Kumar 덕분에 매우 큰 JSON 객체를 반복하여 충돌을 막습니다.

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 당신이 큰 개체가있는 경우를 제외하고 당신에게 (이 스레드에서 다른 시간을 언급 한대로) 당신의 문자열 representaion을 줄 것이다, 이것은 또한 작업을해야한다 - 단지 당신이 당신의 요구에 맞게 그것을 구축하기 - 나는 배열보다 이름이 그것을 필요


5

워킹 ... 사용하기 쉬움

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

감사


3

다음과 같이 기본 stringify 함수를 사용할 수 있습니다

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

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

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


3

문자열 형식으로 json 속성 값을 얻으려면 다음 방법을 사용하십시오.

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

Node JS에서의 디버깅을 위해 util.inspect ()를 사용할 수 있습니다 . 순환 참조로 더 잘 작동합니다.

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

3

기존 JSON이 너무 많은 곳을 대체하므로 내 자신의 기능을 작성했습니다. 이것은 효과가있는 것 같지만 프로젝트에서 발생하지 않는 몇 가지 중요한 사례를 놓쳤을 수 있습니다. 그리고 기존의 객체에는 작동하지 않으며 자체 제작 데이터에만 작동합니다.

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: 

객체를 문자열로 변환하는 간단한 구문은 다음과 같습니다.

JSON.stringify(value)

전체 구문은 다음과 같습니다. JSON.stringify (value [, replacer [, space]])

간단한 예를 보자. 전체 문자열은 큰 따옴표를 가져오고 필요한 경우 문자열의 모든 데이터가 이스케이프됩니다.

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
코드에 대한 간단한 설명을 제공 할 수 있다면 좋을 것입니다.
jonny

이것은 질문에 대한 답변을 제공하지 않습니다. 평판 이 충분 하면 모든 게시물댓글 수 있습니다 . 대신 asker의 설명이 필요없는 답변을 제공하십시오 . - 검토에서
Rafael

내 답변을 편집했습니다. @ Rafael 및 @ jonny를 지적 해 주셔서 대단히 감사합니다.
Rahul Choudhary

1

JSON.stringify이러한 변환을 수행 하는 데 사용 하십시오-그러나 undefined가치가 있는 필드는 json에 포함되지 않습니다.

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

var s=JSON.stringify(j);

console.log(s);

remember출력 json에서 '사라짐' 필드


당신은 내 하루를 저장했습니다. 객체를 저장할 수 없습니다. 정의되지 않은 값을 가진 필드가 json에 포함되지 않는 키가 내 문제를 해결했습니다!
Mohammad Ghonchesefidi

0

JSON.stringify () 메서드를 사용하여 JSON 객체를 String으로 변환 할 수 있습니다.

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

이 문자열을 다시 json 객체로 변환하려면 JSON.parse () 메서드를 사용할 수 있습니다.


0

사용하다 JSON.stringify(param1, param2, param3);

뭐가: -

param1-> JSON으로 변환 할 값

param2-> 자신의 방식으로 문자열 화하는 기능. 또는 최종 JSON에 객체를 포함해야하는 화이트리스트 역할을합니다.

param3-> 추가 할 공백 수를 나타내는 숫자 데이터 유형입니다. 허용되는 최대 값은 10입니다.


0

str => obj로 변환

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

const onePLusObj = JSON.parse (onePlusStr);

obj 변환 => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

JS의 JSON 구문 분석 참조 :
JSON.parse () : click
JSON.stringify () : click


더 많은 정보를 제공 할 수 있습니까? 참고 자료
Nodejs-nerd

JS의 JSON 구문 분석에 대한 참조 : JSON.parse () : w3schools.com/js/js_json_parse.asp JSON.stringify () : w3schools.com/js/js_json_stringify.asp
yash

감사합니다, 당신은 이것을 포함하도록 답변을 편집 할 수 있습니까
Nodejs-nerd

0

사용하기 매우 쉬운 방법이지만 호환성 문제가 발생할 수 있으므로 릴리스에서는 사용하지 마십시오.

당신 편에서 테스트하기에 좋습니다.

Object.prototype.toSource()

//Usage:
obj.toSource();

0

stringify 함수를 사용하십시오.

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

var j_json = JSON.stringify(j);

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

행복한 코딩 !!!


0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // 변환하려는 객체를 문자열 형식으로 전달


-1

이것을 사용하십시오.

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

-24

JSON 문자열이 있고 []로 감싸지 않은 경우 먼저 줄 바꿈하십시오.

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

또는

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

OP가 다른 방향으로 가고 있습니다. 귀하의 질문은 JSON 문자열이 있고 객체로 가져 오려는 반대의 경우에 대답합니다.
Joshua Snider

1
당신은 질문에 반대되는 일을했습니다. JSON.stringfy () 함수를 사용해야합니다
Hardik Patel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.