所以我有一个脚本可以生成4个变量:NAME,SMA,BBLOWER和BBUPPER以及循环的每次迭代,并将它们作为新行添加到现有数组中。所以我的数组的形式是
[[NAME,SMA,BBLOWER,BBUPPER],[NAME,SMA,BBLOWER,BBUPPER],[NAME, SMA,BBLOWER,BBUPPER],etc]
我想做的不是将它们添加到数组中,而是希望将它们转换为具有特定结构的JSON文件:
{
"NAME" : [{
"SMA" : <value>,
"BBLOWER" : <value>,
"BBUPPER" : <value>,
}],
"NAME" : [{
"SMA" : <value>,
"BBLOWER" : <value>,
"BBUPPER" : <value>,
}], etc
]
}
现在我已经打字了,我甚至不确定结构是否正确。无论如何,我基本上希望能够获取生成的json文件并轻松提取SMA值(例如,使用名称&#34; VGS&#34;),只需输入以下内容:
smaValue = json.VGS.SMA
或市场的BBUPPER&#34; VAS&#34;像这样:
bbUpperValuer = json.VAS.BBUPPER
这种方法是否实用?还有其他方法我可以使用数组做同样的事情,但这样做JSON方式似乎更干净和#34;正确&#34;。
答案 0 :(得分:1)
很容易混淆JavaScript对象文字(实际JavaScript对象的源代码中的定义),JavaScript对象本身和JSON(将数据表示为字符串的格式,灵感来自JavaScript的语法)。
我提到这一点是因为你的问题似乎触及了几个不同的目标:
对于第一部分,您只需要更改脚本从写入数组到设置对象属性的方式。您不需要预先声明结构。在没有看到您的代码的情况下,很难更具体,但它可能会将对item.UPPER = foo();
等固定字段名称的直接属性访问与对results[getName()] = item;
<之前未知的属性的动态访问相结合/ p>
第二部分很简单 - 但也可能与手头的任务无关。只需使用dataToStore = JSON.stringify(something)
将对象转换为JSON格式的字符串,然后something = JSON.parse(dataLoadedFromStore)
将其转回。
您自己回答的第三部分 - 您提供的示例语法正是您可以对第一步创建的对象执行的操作。再说一次,为了解决问题,它与JSON没有任何关系,它只是你如何访问JavaScript中的对象。
答案 1 :(得分:0)
JSON是要走的路。我猜这是mongoDB在其结构中存储数据时使用JSON的原因。
你可以做到
{
"VGS" : {
"SMA" : <value>,
"BBLOWER" : <value>,
"BBUPPER" : <value>,
},
"VAS" : {
"SMA" : <value>,
"BBLOWER" : <value>,
"BBUPPER" : <value>,
}, etc
}
像这样打电话给他们
smaValue = json["VGS"]["SMA"];
bbUpperValuer = json["VAS"]["BBUPPER"];