Javascript-字符串到多层数组
My函数从Web服务获取一个字符串,该字符串表示一个多层数组结构。然后我把它赋给一个变量。类似这样的内容:Javascript-字符串到多层数组,javascript,arrays,Javascript,Arrays,My函数从Web服务获取一个字符串,该字符串表示一个多层数组结构。然后我把它赋给一个变量。类似这样的内容: //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 = in
//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 ]
如何根据字符串的内容重新创建数组结构?步骤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时。您可以使用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]]
如所定义的,并使用进行解析以获取对象
var json='[[1,2,3],“a”,“b”,“c”],[{“v”:1437,“f”:“1437-点a”},{“v”:1440,“f”:“1440-点b”},{“v”:1445,“f”:“1445-点c”}],[6.7,8.2,9.2],
object=JSON.parse(JSON);
console.log(对象)代码>
.as-console-wrapper{max-height:100%!important;top:0;}
请添加字符串,您会得到。数组字符串中的“a
”是什么?为什么不将Web服务的输入更改为有效字符串?您能告诉我它是什么样子吗?每当我使用JSON时,在实际值之前就有名称作为键,所以我可以解压。在这种情况下,我对它的技术有点不熟悉,如何将它解压缩到包含内部数组的数组中。假设数组格式正确,JSON字符串看起来像”[[1,2,3],“a”,“b”,“c”],[“e”,“f”,“g”],[6.7,8.2,9.2]'
,谢谢你的回答!正如建议的那样,我确保使用JSON而不是字符串。我希望我能同时接受两个答案。再次感谢你!感谢Nina提供的详细答案和示例!