2012-01-22 3 views
58
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 줄) 결혼하지 않습니다. 뭐가 문제 야?JavaScript에서 JSON 문자열을 만드는 방법은 무엇입니까?

+2

이이 http://stackoverflow.com/questions/3904269/convert- 대답을 참조하십시오 ...이 방법은 당신을 도와줍니다 생각 object-to-json-string – powtac

+0

'eval'은 ** 악마 **입니다. – candlejack

답변

56

자바 스크립트는 여러 줄에 걸쳐 문자열을 처리하지 않습니다.

당신은 그 연결하는 필요합니다

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

또한 ES6과 위의 템플릿 리터럴을 사용할 수 있습니다 (See here for the documentation)

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

또는 리터럴의 각 줄 끝 부분에 \를 붙이십시오. – Phrogz

+1

여러 줄 문자열의 경우, 큰 따옴표 나 큰 따옴표 대신'(역 자로 문자 # 1 키 왼쪽에)를 사용할 수 있습니다. 이것을 '템플릿 리터럴'이라고합니다. – Blue

+2

확실히 :이 대답에 정착하지 말고 다른 사람을 찾습니다. – AsTeR

13

사용 JSON.stringify :

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

좋은 조언이 있지만 문제가 무엇인지 보여주지는 않습니다. – Phrogz

+0

구형 브라우저를 지원해야하는 경우 [json2.js] (https://github.com/douglascrockford/JSON-js)도 참조하십시오. – Douglas

+0

@Douglas가 Douglas Crockford입니까? 그냥 호기심 ??? – nepsdotin

-3

JSON 문자열 그들에 줄 바꿈을 가질 수 없습니다. 모든 것을 한 줄로 만들어야합니다 : {"key":"val","key2":"val2",etc....}.

하지만 JSON 문자열을 직접 생성하지 마십시오. 많은 라이브러리가 있습니다. 가장 큰 라이브러리는 jquery입니다.

+6

JSON은 줄 바꿈을 사용할 수 있지만 JavaScript 문자열 리터럴 구문은 사용할 수 없습니다. –

+0

은 문자열 내에 삽입되었지만 키/값 쌍 사이에는 삽입되지 않았습니다. –

+1

이스케이프 처리되지 않은 개행 문자 및 JSON 마크 업을 포함 할 수없는 JavaScript 문자열 리터럴 구문을 혼동스럽게 생각한다고 생각합니다. JSON 마크 업에는 줄 바꿈이 포함될 수 있습니다. –

58

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

var jsonAsString = JSON.stringify(obj); 

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

+1

그 대답은 정답이어야합니다. – sandman

128

내가 그것을 할 방법은 :이 방법은 오류 가능성을 줄일 수 있습니다 생각

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

.

+2

우아한 답변이 필요합니다. – Pred

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

이 아주 쉽게 할 수 있고 간단한

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. 
관련 문제