手动创建JSON字符串

时间:2017-08-25 23:34:28

标签: javascript arrays json

所以我有一个脚本可以生成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;。

2 个答案:

答案 0 :(得分:1)

很容易混淆JavaScript对象文字(实际JavaScript对象的源代码中的定义),JavaScript对象本身和JSON(将数据表示为字符串的格式,灵感来自JavaScript的语法)。

我提到这一点是因为你的问题似乎触及了几个不同的目标:

  • 将变量的结构从平面数组更改为更多维的对象
  • 将任何结构的对象存储到文件中,序列化为JSON字符串,然后将其读回并重新创建对象
  • 访问多维对象的属性,无论是通过普通的JavaScript操作创建的,还是通过解析JSON字符串

对于第一部分,您只需要更改脚本从写入数组到设置对象属性的方式。您不需要预先声明结构。在没有看到您的代码的情况下,很难更具体,但它可能会将对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"];