2011-08-08 4 views
1

자바 스크립트 루프에서 JSON 문자열을 만들고 싶습니다. 이것은 내가하려고했던 것 (JSON 문자열처럼 보이는 것을 제공한다)이지만 작동하지 않는다.자바 스크립트 루프에서 JSON 문자열 만들기

var edited = ""; 
for(var i=1;i<POST.length-1;i++) { 
    edited += '"'+POST[i].name+'":"'+POST[i].value+'",'; 
} 

그것은 나에게주는이 :

"type":"empty","name":"email-address","realname":"Email Address","status":"empty","min":"empty","max":"empty","dependson":"empty", 

나중에 JSON 객체로 변환하려고하면이 작동하지 않습니다.

+0

예상되는 결과는 무엇입니까? –

+1

이것은 { "type": "empty", "name": "empty", "realname": "empty", "status": "empty", "min": "empty", "max" ":"empty ","dependson ":"empty ","matches ":"empty "}. 문제가 해결되었습니다 – Sthe

답변

6

두 가지 문제 : 당신은 객체를 원하는

  • , {와 함께 시작하는 JSON 문자열이있다, 그래서

    var edited = {}; 
    for(var i=0;i<POST.length-1;i++) {  
        edited[POST[i].name] = POST[i].value; 
    } 
    

    아니면 JSON.stringify 당신이 찾고있는 무엇 끝 부분은 }입니다.

  • 유효하지 않은 것으로 인식 될 수있는 후행 ,이 있습니다. 을 제거하는 for 루프 후 edited = edited.slice(0, -1); 추가 {
  • 와 JSON 문자열을 시작 var edited = "";var edited = "{";

    • 변경 :

    이 라이브러리를 사용하지만, 코드를 수정 아마 더 낫다 후행 쉼표.

  • }

와 JSON 문자열을 종료 이전 문 뒤에 edited += "}"; 추가 귀하의 최종 코드는 다음과 같습니다

var edited = "{"; 
for(var i=1;i<POST.length-1;i++) { 
    edited += '"'+POST[i].name+'":"'+POST[i].value+'",'; 
} 
edited = edited.slice(0, -1); 
edited += "}"; 

다시,하여 라이브러리를 (예를 들어 JSON.stringify)를 사용하는 것이 가장 좋습니다 for 루프가있는 객체이며 POST[i].name을 키로 사용하고 POST[i].value을 값으로 사용하여 라이브러리를 사용하여 객체를 JSON으로 변환합니다.

또한, 그러므로 인덱스를 0 (첫 번째 값)과 POST.length-1 (마지막 값)을 제외하고, 인덱스 1 시작하여 인덱스 POST.length-2로 끝나는된다. 그게 네가 정말로 원하는거야?

+0

고맙습니다. :-) – Sthe

0

JSON 문자열에 쉼표가 있습니다. JSON 문자열 형식 : { "JSON": "안녕하세요, 세계"}

var edited = "{"; 
for(var i=1;i<POST.length-1;i++) { 
    edited += '"'+POST[i].name+'":"'+POST[i].value+'",'; 
} 
// remove last comma: 
edited = edited.substring(0, edited.length-1) + "}"; 
4
//dummy data 
var post=[{name:'name1',value:1},{name:'name2',value:2}]; 

var json=[]; 
for(var i=0;i<post.length;i++) 
{ 
    var temp={}; 
    temp[post[i].name]=post[i].value; 
    json.push(temp); 
} 

var stringJson = JSON.stringify(json); 


alert(stringJson); 

http://jsfiddle.net/3mYux/

+0

고맙습니다. 'json.push ({POST [i] .name : POST [i] .value});)에서 오류가 발생했습니다.그것은 예기치 않은 식별자를 말합니다. – Sthe

+0

내 대답을 편집하고 데모를 만들었습니다 !! –