在javascript中将字符串从JSON数组转换为另一个数组

Turn string from JSON array into another array in javascript

本文关键字:数组 转换 另一个 JSON javascript 字符串      更新时间:2023-09-26

我正在尝试移植以下代码以使用 JSON 文件 http://malamas.com/jsuc/jsuc.html目前,我已经设法采用了其中的"单位"和"因子"部分:

property[0] = "Acceleration";
unit[0] = new Array("Meter/sq.sec (m/sec^2)", "Foot/sq.sec (ft/sec^2)", "G (g)", "Galileo (gal)", "Inch/sq.sec (in/sec^2)");
factor[0] = new Array(1, .3048, 9.806650, .01, 2.54E-02);

并将它们放入 JSON 行中:

var text = '{"Accelleration": { "unit":"''"Meter/sq.sec (m/sec^2)''", ''"Foot/sq.sec (ft/sec^2)''", ''"G (g)''", ''"Galileo (gal)''", ''"Inch/sq.sec (in/sec^2)''"", "factor":"1, .3048, 9.806650, .01, 2.54E-02"}}'
var obj = JSON.parse(text);

我可以像这样输出为字符串

"Meter/sq.sec (m/sec^2)", "Foot/sq.sec (ft/sec^2)", "G (g)", "Galileo (gal)", "Inch/sq.sec (in/sec^2)"

但我希望能够通过这样做将其输入到顶部代码中:

property[0] = "Acceleration";
unit[0] = new Array(obj.Accelleration.unit);
factor[0] = new Array(obj.Accelleration.factor);

不幸的是,当我这样做时,单位 [0][0] 会提出同样的事情;

"Meter/sq.sec (m/sec^2)", "Foot/sq.sec (ft/sec^2)", "G (g)", "Galileo (gal)", "Inch/sq.sec (in/sec^2)"

如何使它作为一个数组工作?谢谢!

JSON 中的内容是一个包含字符串表示形式的字符串。由于该表示形式不是 JSON,因此您无法直接解析它(但您可以通过在其周围添加括号将其转换为 JSON)。

不要使用包含字符串的字符串,而是使其成为包含字符串的数组。然后当你解析它时,你已经有了数组:

var text = '{"Accelleration": { '+
  '"unit": ["Meter/sq.sec (m/sec^2)", "Foot/sq.sec (ft/sec^2)", "G (g)", "Galileo (gal)", "Inch/sq.sec (in/sec^2)" ], '+
  '"factor": [ 1, .3048, 9.806650, .01, 2.54E-02 ]'+
  '}}'
var obj = JSON.parse(text);

现在你有了你的数组,除了从对象中获取它们之外,不需要做任何事情:

unit[0] = obj.Accelleration.unit;
factor[0] = obj.Accelleration.factor;