2016-07-27 85 views
1

在Python中,我加載一個帶有數據的變量,然後用此代碼將其轉換爲json。JavaScript SyntaxError:JSON.parse:意外的字符行1

jsVar = (json.dumps(jsPass)) 

它產生這種輸出。 {「TT1004」:[[1004,45.296109039999997,-75.926546579999997,-75.926546579999993,66.996664760000002,150,false]],「TT1001」:[[1001,45.296471220000001,-75.923881289999997,64.616423409999996,150,false]],「TT1003」[[1003 ,45.296109379999997,-75.926543379999998,67.240025419999995,150,假]], 「TT1002」:[[1002 45.29626098,-75.924908610000003,65.300880480000004,150,真實]]}

輸出經過JSON格式器&驗證網站上驗證。當我運行的JavaScript代碼

var myVar2 = {}; 
var myVar2 = JSON.parse(jsVar); 

我收到以下錯誤

語法錯誤:JSON.parse:第1行的JSON數據的2列意外的字符。

我不是很強大的JS和新的JSON。任何建設性意見,網站或文學建議將不勝感激。

更好地關注實際問題。 從你非常有幫助的解釋和問題我可以看到,我不需要解析數據。如前所述,變量保存有效的JavaScript數組數據。我發現的是,在Python中生成的變量不是我在JS中訪問的變量,即使它們位於同一個文件位置並且名稱相同。該過程設置爲像這樣運行。首先,Python代碼生成JSON變量,其次JavaScript代碼爲變量分配來自Python中生成的變量的數據,然後觸發HTML文件以執行JS代碼。當我查看JavaScript變量的console.log或.dir方法的輸出時,沒有數據。我需要學習的是如何將Python變量導入JavaScript代碼。我不知道這個問題是否可以在這裏回答,或者我應該在StackOverFlow中提出另一個問題?

+4

你究竟如何從python獲取數據到javascript? – Suever

+0

是否有可能你已經返回JSON(而不是需要解析的字符串)? – Hodrobond

+0

@Hodrobond:JSON *是一個需要解析的字符串。還有什麼可以轉讓? – 2016-07-27 20:47:41

回答

0

我已經用JSONlint快速測試過,所以你肯定會得到有效的json。沒有必要用JSON.parse()來標準化,因爲它已經很好了。只有你所要做的事情是:

var myVar2 = jsVar; 

如果檢查console.log(myVar2.TT1001);會爲你展示一些陣列數據通緝。

0

您的數據已被解析,您可以簡單地使用它像JavaScript對象。如果你的數據像

"{"TT1004":[[1004,45.29610904,-75.92654658,66.99666476,150,false]],"TT1001":[[1001,45.29647122,-75.92388129,64.61642341,150,false]],"TT1003":[[1003,45.29610938,-75.92654338,67.24002542,150,false]],"TT1002":[[1002,45.29626098,-75.92490861,65.30088048,150,true]]}" 

一個JSON字符串,那麼你需要解析它,但你上面粘貼的數據是一個javascript對象。

{ 
    "TT1004": [ 
     [1004, 45.296109039999997, -75.926546579999993, 66.996664760000002, 150, false] 
    ], 
    "TT1001": [ 
     [1001, 45.296471220000001, -75.923881289999997, 64.616423409999996, 150, false] 
    ], 
    "TT1003": [ 
     [1003, 45.296109379999997, -75.926543379999998, 67.240025419999995, 150, false] 
    ], 
    "TT1002": [ 
     [1002, 45.29626098, -75.924908610000003, 65.300880480000004, 150, true] 
    ] 
    } 
+0

他在問題中發佈的是如果JSON來自服務器的樣子。不會有外部引號。那些只會在那裏,如果你直接在JS程序中創建JSON數據,如:'var j ='{「foo」:「bar」}''。外部引號不是結果數據的一部分。它們只是語法分隔符,它告訴JS引擎你想創建一個字符串。 – 2016-07-27 20:50:01

+0

@squint你太嚴格了.. :) –

+0

是的,我知道... :-)只是人們對JSON的東西充滿了混淆。當他們在一個問題中發佈原始JSON數據時,它看起來像JavaScript代碼,所以很難區分他們實際上有什麼。 – 2016-07-27 22:34:00

-1

您的數據已經是JavaScript對象。如果您不確定您獲取的對象是否已經是有效的JavaScript對象,則可以執行此類操作。

if(typeof data != 'object') 
{ 
    var data = JSON.parse(data); 
} 
相關問題