JavaScript에서 JSON 문자열을 만드는 방법은 무엇입니까?


96
window.onload = function(){
    var obj = '{
            "name" : "Raj",
            "age"  : 32,
            "married" : false
            }';

    var val = eval('(' + obj + ')');
    alert( "name : " + val.name + "\n" +
           "age  : " + val.age  + "\n" +
           "married : " + val.married );

}

이와 같은 코드에서 그냥 놀기 위해 JSON 문자열을 만들려고합니다. 그것은 오류를 던지고 있지만 모든 이름, 나이, 결혼 한 줄을 한 줄 (줄 2)에 넣으면 그렇지 않습니다. 뭐가 문제 야?


답변:


85

Javascript는 여러 줄에 걸쳐 문자열을 처리하지 않습니다.

다음을 연결해야합니다.

var obj = '{'
       +'"name" : "Raj",'
       +'"age"  : 32,'
       +'"married" : false'
       +'}';

ES6 이상에서 템플릿 리터럴을 사용할 수도 있습니다 : ( 문서는 여기를 참조하세요 )

var obj = `{
           "name" : "Raj",
           "age" : 32,
           "married" : false,
           }`;

13
또는 리터럴의 각 줄 끝에 \를 넣으십시오.
Phrogz

3
여러 줄 문자열의 경우 작은 따옴표 또는 큰 따옴표 대신`(# 1 키 왼쪽에있는 백틱 문자)를 사용할 수 있습니다. 이를 '템플릿 리터럴'이라고합니다.
Blue

5
확실히 :이 대답에 만족하지 말고 다른 사람들을 바라보십시오.
AsTeR

템플릿 리터럴은 ECMA Script 2015 Standard입니다. 이 질문과 답변은 이미 2012 년의 것입니다. 그러나 나는 그것을 편집 할 것이다 :)
bardiir

정말? 처음부터 문자열 연결이 JSON을 빌드하는 가장 좋은 방법입니까? 다른 대답은 받아 들여진 대답이어야한다고 생각합니다.
rory.ap

265

내가하는 방법은 :

   var obj = new Object();
   obj.name = "Raj";
   obj.age  = 32;
   obj.married = false;
   var jsonString= JSON.stringify(obj);

이런 식으로 오류 가능성을 줄일 수 있다고 생각합니다.


62

JSON.stringify 함수는 json 객체를 문자열로 변환합니다.

var jsonAsString = JSON.stringify(obj);

브라우저가이를 구현하지 않는 경우 (IE6 / IE7) JSON2.js 스크립트를 사용하십시오 . 존재하는 경우 기본 구현을 사용하므로 안전합니다.


23

이것은 매우 쉽고 간단 할 수 있습니다.

var obj = new Object();
obj.name = "Raj";
obj.age = 32;
obj.married = false;

//convert object to json string
var string = JSON.stringify(obj);

//convert string to Json Object
console.log(JSON.parse(string)); // this is your requirement.

13

사용 JSON.stringify:

> JSON.stringify({ asd: 'bla' });
'{"asd":"bla"}'

이전 브라우저를 지원해야하는 경우 json2.js 도 참조하십시오 .
Douglas

예, 그의 GitHub 프로젝트 목록에 대한 링크가 있습니다. github.com/douglascrockford
Douglas

SO에서 @nepsdotin 더글러스는 "더글러스 크록 포드 아닌 자신의 GitHub의"
TimWolla

아, 놓 쳤어, 아니, 크록 포드가 아니야!
Douglas

5

이 방법이 도움이 될 것 같아요 ...

var name=[];
var age=[];
name.push('sulfikar');
age.push('24');
var ent={};
for(var i=0;i<name.length;i++)
{
ent.name=name[i];
ent.age=age[i];
}
JSON.Stringify(ent);

-6

json 문자열에는 줄 바꿈이있을 수 없습니다. 모두 한 줄로 만들어야합니다 : {"key":"val","key2":"val2",etc....}.

그러나 JSON 문자열을 직접 생성하지 마십시오. 당신을 위해 많은 라이브러리가 있으며 그중 가장 큰 것은 jquery 입니다.


8
JSON에는 줄 바꿈이있을 수 있지만 JavaScript 문자열 리터럴 구문은 줄 바꿈이 없습니다.

예,하지만 키 / 값 쌍 사이는 아닙니다.
Marc B

1
이스케이프 처리되지 않은 개행 문자와 JSON 마크 업을 포함 할 수없는 JavaScript 문자열 리터럴 구문을 혼동하고 있다고 생각합니다. JSON 마크 업은 확실히 줄 바꿈을 포함 할 수 있습니다.

1
... 질문의 코드를 jsonlint.com 에 붙여 넣으십시오 (물론 등 ...없이) . 유효성 검사를 클릭하면 예쁘게 인쇄 될 때 실제로 줄 바꿈을 삽입 하는 것을 볼 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.