将JSON转换为自定义格式

时间:2015-04-20 20:48:41

标签: jquery json

我从服务器获取以下JSON:

"[{"Apr-2015":"20"},{"Mar-2015":"20"},{"Feb-2015":"20"},{"Dec-2014":"10"},{"Nov-2014":"0"},{"Oct-2014":"10"},{"Jul-2014":"0"},{"Jun-2014":"0"},{"May-2014":"0"}]"

我需要它采用以下格式:

[["Apr-2015",20],["Mar-2015",20],["Feb-2015",20],["Dec-2014",0],["Nov-2014",10],["Oct-2014",10],["Jul-2014",0],["Jun-2014",0],["May-2014",0]]

我试过这样做:

$.map(JSON.parse(data.d), function (key, value) {
                            var test = key.split(':');
                            return [test[0], test[1]];
                        });

但由于key是[object object]类型,我无法这样做。 我怎样才能得到我想要的结果?

2 个答案:

答案 0 :(得分:0)

问题是您将{"Apr-2015":"20"}视为关键,这就是为什么它只是说[object object]。您还需要查看每个密钥。

var json = '[{"Apr-2015":"20"},{"Mar-2015":"20"},{"Feb-2015":"20"},{"Dec-2014":"10"},{"Nov-2014":"0"},{"Oct-2014":"10"},{"Jul-2014":"0"},{"Jun-2014":"0"},{"May-2014":"0"}]';

var converted = JSON.parse(json).map(function(item) {
  return Object.keys(item).reduce(function(list, key) {
    if (item.hasOwnProperty(key)) {
      list.push(key, item[key]);
    }
    return list;
  }, []);
});

alert(JSON.stringify(converted));

答案 1 :(得分:0)

另一个版本:

var d = [{"Apr-2015":"20"},{"Mar-2015":"20"},{"Feb-2015":"20"},{"Dec-2014":"10"},{"Nov-2014":"0"},{"Oct-2014":"10"},{"Jul-2014":"0"},{"Jun-2014":"0"},{"May-2014":"0"}];
var a = [];

$.each(d, function(i,row){ var key = Object.keys(row)[0]; a.push([key, row[key]]); });
console.log(a);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>