我的函数从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 ]
如何根据字符串的内容重新创建数组结构?
答案 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; }