0

JSON 関連配列があります

[{"Test":"5:00pm"},{"Testing2":"4:30 pm"}]

そして、それが配列になるようにしたいのですが、

{
  theatre = Test
  time = 5:00pm
},
{
  theatre = Testing2
  time = 4:30 pm
}

しかし、キー名を取得して値にする方法がわかりません...

何か助けはありますか?私は見ていましObject.keysたが、適切な解決策を見つけることができませんでした。

4

5 に答える 5

1

オブジェクト値を持つ配列があります。それらをループする必要があります:

var oldArray = [{"Test":"5:00pm"},{"Testing2":"4:30 pm"}];
var newArray = [];

for (var i = 0; i < oldArray.length; i++) {
    var keys = Object.keys(oldArray[i]);

    newArray.push({
        theatre: keys[0],
        time: oldArray[i][keys[0]]
    });
}

http://jsfiddle.net/FNAtw/

newArrayこれにより、2 つの要素が格納された配列が得られます。theatre: 'Test'最初の要素は kvpsとを持つオブジェクトtime: '5:00pm'です。2 番目の要素は、kvpstheatre: 'Testing2'とを持つオブジェクトtime: '4:30pm'です。

于 2012-08-20T15:24:35.963 に答える
0
var result = [];
var str = [{"Test":"5:00pm"},{"Testing2":"4:30 pm"}];
for (var i = 0; i < str.length; i++) {
    var obj = {};
    foreach (var key in str[i]) {
        obj.theatre = key;
        obj.time = str[i][key];
    }
    result.push(obj);
}
于 2012-08-20T15:29:00.487 に答える
0

少しぎこちないかもしれませんが、クロスブラウザーで動作するはずです。

var js = [{"Test":"5:00pm"},{"Testing2":"4:30 pm"}]
var newJSON = []
for(var i = 0; i< js.length; i++) {
    for( var key in js[i]) {
        if(js[i].hasOwnProperty(key)) {
            var tmpJS= {};
            tmpJS['theater'] =  key;
            tmpJS['time'] = js[i][key];
            newJSON.push(tmpJS);
        }
    }
}
于 2012-08-20T15:32:51.547 に答える
0

この回避策を試してください:

var json = '[{"Test":"5:00pm"},{"Testing2":"4:30 pm"}]';
var betterJson = json.replace('{"', '{"theatre":"').replace('":"','",time:"');

JSON が常に上記のように単純である場合、これは機能するはずです。でも脆い…

于 2012-08-20T15:21:17.850 に答える
0

JS オブジェクトがある場合は、Object.keysを使用できます。これは、最新のブラウザで動作します。

各アイテムをループして、最初のアイテムを保存することもできます。

于 2012-08-20T15:23:07.230 に答える