2011-08-08 16 views
1

javascript forループからJSON文字列を作成します。これは私がやろうとしたことです(これはJSON文字列のようなものです)。しかし動作しません。javascript forループから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

2つの問題:このような何か

  • あなたがオブジェクトをしたいので、JSON文字列が{で始める必要があり、末尾は}です。
  • 無効であると認識される末尾の,があります。

これは、ライブラリを使用するために、おそらくより良いですが、あなたのコードを修正する:

  • 変更var edited = "";var edited = "{";に削除するには、forループの後edited = edited.slice(0, -1);を追加{
  • を使用してJSON文字列を開始します末尾にカンマ。
  • }

を使用して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

ハッシュを作成して、ハッシュにtoStringを追加することはできませんか?

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

それともJSON.stringifyは、あなたが探しているものです:http://www.json.org/js.html

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

ありがとうございます。 Imは 'json.push({POST [i] .name:POST [i] .value});)'でエラーを受け取ります。それは予期しない識別子を言う。 – Sthe

+0

私の答えを編集し、あなたのデモを作成しました! –

関連する問題