jquery将json字符串转换为数组

时间:2014-01-13 03:49:02

标签: javascript jquery

我从我的服务器获取Json字符串,如下所示

var str = {"12:30 PM":"1:00 PM","11:30 AM":"12:00 PM"} 

我想将其转换为像

这样的数组
var str = [["12:30 PM","1:00 PM"], ["11:30 AM","12:00 PM"]];

我该怎么做?

我尝试使用jQuery.parseJSON(str)转换,但是它给出了错误。

我还在stackoverflow中进行了大量研究,似乎有很多解决方案可以解决这个问题,但没有一个解决方案可以解决这个问题。

5 个答案:

答案 0 :(得分:2)

str已经是一个对象。

您可以使用jQuery.map方法。

var str = {"12:30 PM":"1:00 PM","11:30 AM":"12:00 PM"};
var result = $.map(str, function(value, key) {
  return [[key, value]];
});

答案 1 :(得分:1)

试试这个map示例

var str = {"12:30 PM":"1:00 PM","11:30 AM":"12:00 PM"};
var convert = Object.keys(str).map(function(k) {
    return [k, str[k]];
});

如果您需要支持IE< = 8,请参阅Object.keys pollyfillArray.prototype.map pollyfill

答案 2 :(得分:0)

var str = '{"12:30 PM":"1:00 PM","11:30 AM":"12:00 PM"}';
object = JSON.parse(str);
var my_array = new Array();

for(var key in object ){
    my_array[key] = object[key];
}

答案 3 :(得分:0)

你能试试吗?

var p = {"12:30 PM":"1:00 PM","11:30 AM":"12:00 PM"} 
var o = [];

for (k in p) {
    if (p.hasOwnProperty(k)) {
        o.push([k, p[k]]);
    }
}

答案 4 :(得分:-1)

假设您正在谈论从服务器获取的实际字符串,您可以进行简单的字符串替换:

var str = '{"12:30 PM":"1:00 PM","11:30 AM":"12:00 PM"}';

str = str
.replace('{"','[["')
.replace('"}','"]]')
.replace('","','"],["')
.replace(/":"/g,'","')

这会使str成为表示数组的字符串。要制作一个真正的数组,你可以这样做:

var arr;
eval('arr = ' + str);

这是我可以提倡eval的唯一合法用法。

演示:http://jsfiddle.net/h8c6w/