我从API调用中获取此数组:
[
Node { id: 123, properties: {color : 'red', shape : 'round'} },
Node { id: 121, properties: {color : 'blue', shape : 'square'} },
Node { id: 119, properties: {color : 'yellow', shape : 'rectangular'} }
]
这是什么老实说?它不是一个对象数组吗?如果是:
[
{ id: 123, properties: {color : 'red', shape : 'round'} },
{ id: 121, properties: {color : 'blue', shape : 'square'} },
{ id: 119, properties: {color : 'yellow', shape : 'rectangular'} }
]
我想要访问"颜色" - 数组中第一项的属性我会去:
myArray[0].properties.color
但我不能在这里做这件事,因为奇怪的" Node" - 数组中每个项目的前缀。
这是什么东西,我如何访问它上面的任何属性?
答案 0 :(得分:1)
我不确定,但是如果这个数据就像你提出的那样简单,我建议你是懒惰并从字符串中替换Node
:
var str = `[
Node { id: 123, properties: {color : 'red', shape : 'round'} },
Node { id: 121, properties: {color : 'blue', shape : 'square'} },
Node { id: 119, properties: {color : 'yellow', shape : 'rectangular'} }
]`;
var withoutCrap = str.replace(/Node\s*\{/g, "{");
输出:
[
{ id: 123, properties: {color : 'red', shape : 'round'} },
{ id: 121, properties: {color : 'blue', shape : 'square'} },
{ id: 119, properties: {color : 'yellow', shape : 'rectangular'} }
]
请注意,这仍然是无效的JSON 。 JSON规范要求引用密钥{"like": "this"}
。但是,您可以使用good'ol dirty eval
:
var myObject = eval("("+withoutCrap+")");
这些额外的括号可以防止我过去遇到的一些问题。
解决此问题的正确方法是获取与此协议关联的 API框架(显然不是JSON)。它将包含将正确解释数据的解析器。您应该在您要连接的站点上查找文档。