2014-12-07 17 views
-3

我試圖端口下面的代碼使用JSON文件的另一個陣列http://malamas.com/jsuc/jsuc.html 目前,我已成功地把「單元」,以及這種「因素」部分:打開串入的JavaScript

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)" 

我怎樣才能使它作爲一個數組?謝謝!

+2

你爲什麼將其存儲作爲一個字符串?如果你在javascript中這樣做,你可以直接存儲對象而不用將對象包裝成字符串。 – Jhecht 2014-12-07 22:33:44

+0

正如@Jhect所說,使用一個OBJECT。 – JOSEFtw 2014-12-07 22:34:38

+0

我可以舉一個例子說明在這種情況下如何做到這一點?我對JS和JSON文件的理解非常有限。 – 2014-12-07 22:36:22

回答

0

你在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; 
+0

謝謝!我有一種印象,因爲某些奇怪的原因,我不得不在JSON文件中命名所有的東西。 – 2014-12-07 22:42:10