2012-02-09 6 views
3

出力例からキーを削除します。のJavaScript:PHPからJSONオブジェクト

{ 
    "RootName_0":{"Id":1,"ValId":1,"Value":"Colour","Text":"Blue"}, 
    "RootName_1":{"Id":1,"ValId":2,"Value":"Colour","Text":"Red"} 
} 

は、どのように私は持っているだけにBackbone.jsまたはjQueryを使用することができます。

[ 
    {"Id":1,"ValId":1,"Value":"Colour","Text":"Blue"}, 
    {"Id":1,"ValId":2,"Value":"Colour","Text":"Red"} 
] 

それはJSONを編集するためにPHPを使用する方が簡単だ場合、それでは。 ES5(最近のブラウザ)を使用して

+0

PHPの出力を修正してください。難しいはずがありません。それは、とにかく、最初の場所でJSONの出力がばかげている! –

+0

JSON出力は変更できません。生成後に変更する必要があります。 –

+0

これはなぜですか?また、そのようなカンマを乱用しないでください。( –

答えて

8

まあ、PHPでそれだけで最初のアレイ上array_values()を使い、簡単になるように、それは忘れて "によって、「RootName_X」があなたのケースで呼ばれているものである配列インデックス(:

$newvalue = array_values((array)$value); 
echo json_encode($newvalue); 
JavaScriptで

、それは少しトリッキーだが、それはの行に次のようになります。

var newvalue = []; 
for(var root in value) 
    newvalue.push(value[root]); 

質問タイトルであることは、これらが確かにタグではないので、少し混乱していました。 JavaScriptで

1

あなたが行うことができます:

Object.keys(received).map(function(key) { 
    return received[key]; 
}); 

を基本的には、その値を持つ各キーを置き換え、そのキーの配列にオブジェクトを変換します。

+0

いいね!非常にコンパクトです。しかし、彼はまず自分のJSONコンテンツからJavascriptオブジェクトを取得する必要があります。 –

+1

軌道上の@ Lightness Races:私は、OPが既にjQueryを使っているケーキであるJSONを手に入れることができたと考えました。これはajaxコールバックの中でこれを実行するだけの問題です。 – pimvdb

+0

あなたは何を仮定しているか知っています –

1

myFirstVarは、最初のオブジェクトが含まれている場合、は、行いません:jqueryのか、バックボーンのため

mySecondVar = [ myFirstVar.RootName_0, myFirstVar.RootName_1 ]; 
+0

それは特に拡張性がありません。 –

+1

もっと一般的にしても構いません。私はちょうどそのコンセプトを示していた。 –

2

不要に:あなたが欲しい

var obj = { 
    "RootName_0":{"Id":1,"ValId":1,"Value":"Colour","Text":"Blue"}, 
    "RootName_1":{"Id":1,"ValId":2,"Value":"Colour","Text":"Red"} 
}; 
var colors = []; 

for(var key in obj){ 
    colors.push(obj[key]); 
}; 

値はcolors配列になりました。

1

JSONが解析されたら、それは...

var arr = $.map(obj,Object); 

EDIT jQueryのjQuery.mapを使用して、グローバルObject機能を借りてください:あなたはJavaScriptでそれを行う場合

をオブジェクトが元の順序で残っていない可能性があることに注意してください。

RootName_nのキーが連続しており、最後のキーのnがわかっている場合は、これを解決できます。

var last_key = 20; 

var arr = []; 

for(var i = 0; i <= last_key; i++) 
    arr.push(obj['RootName_' + i]); 
関連する問題