Javascript - 字符串到多层数组

时间:2017-01-08 17:14:25

标签: javascript arrays

我的函数从webservice获取一个字符串,表示一个多层数组结构。然后我将它分配给变量。这样的事情:

//incoming = [ [1,2,3], ['a','b','c'], [{v:1437, f:'1437 - Point A'}, {v:1440, f:'1440 -  Point B'}, {v:1445, f:'1445 -  Point C'}], [6.7,8.2,9.2] ]  -- this is the incoming string
   arrays =  incoming;

当我尝试将其传递给另一个函数时,javascript总是警告我这是一个字符串,而不是一个数组(该函数需要稍后将其拆分以获得较小的数组)。

到目前为止,我试过这个:

var globalArray = [];

$.each(arrays, function(key, object) {
    var innerArray = [];
    innerArray=object;
    globalArray.push(innerArray);
});

但是,globalArray不会包含多个数组,但很多字符串将成为兄弟姐妹。

[ 1,2,3,a,b,c,{v:1437, f:'1437 - Point A'}, {v:1440, f:'1440 -  Point B'}, {v:1445, f:'1445 -  Point C'},6.7,8.2,9.2 ] 

如何根据字符串的内容重新创建数组结构?

2 个答案:

答案 0 :(得分:1)

第1步 - 从端点输出有效的JSON,如下所示:

[ 
  [1,2,3], 
  ["a","b","c"],
  [
    {"v":1437, "f":"1437 - Point A"}, 
    {"v":1440, "f":"1440 -  Point B"}, 
    {"v":1445, "f":"1445 -  Point C"}
  ],
  [6.7,8.2,9.2] 
]

第2步 - 使用JSON.parse()

解析输入

不确定该服务发生了什么,但实际上每种语言都有多个不错的JSON编码器/解析器。请使用它们。永远不要尝试手动序列化您的数据,特别是如果它几乎是json。

答案 1 :(得分:1)

您可以使用JSON字符串

[[1,2,3],["a","b","c"],[{"v":1437,"f":"1437 - Point A"},{"v":1440,"f":"1440 - Point B"},{"v":1445,"f":"1445 - Point C"}],[6.7,8.2,9.2]]

standard定义,并用JSON.parse解析它以获取对象。



var json = '[[1,2,3],["a","b","c"],[{"v":1437,"f":"1437 - Point A"},{"v":1440,"f":"1440 - Point B"},{"v":1445,"f":"1445 - Point C"}],[6.7,8.2,9.2]]',
    object = JSON.parse(json);

console.log(object);

.as-console-wrapper { max-height: 100% !important; top: 0; }