javascript
  • json
  • 2011-11-04 76 views 7 likes 
    7

    單引號在Django的模板,我已經打印出來的數據是這樣的:JSON解析 - 內部名稱

    P.place = '{{place.json|safe}}'; 
    

    然後在JavaScript文件我配對會這樣:

    place = JSON.parse(P.place); 
    

    一切都很好像數據:

    {"category": "Cars", "name": "Z"} 
    

    因爲字符串看起來像:

    P.place = '{"category": "Cars", "name": "Z"}' 
    

    所以,我可以使用JSON.parse方法巫婆接受字符串作爲輸入解析它。

    問題是,當我得到的數據這樣的:

    {"category": "Cars", "name": "Wojtek's Z"} 
    

    因爲比JSON解析器輸入字符串看起來像這樣:

    '{"category": "Cars", "name": "Wojtek' 
    

    我無法逃避JSON字符串內的單引號,因爲那時JSON字符串變得無效。出於同樣的原因,我無法用JSON字符串中的double和escape雙引號替換周圍的引號。

    我的解決方案看起來像這樣:

    在HTML模板:

    P.place = {{place.json|safe}}; 
    
    在JavaScript

    var place = JSON.stringify(P.place); 
    place = JSON.parse(place); 
    

    它的工作原理

    然後,但它並不是最佳的解決方案恕我直言。

    如何解決更多的菜刀方式這個問題?

    +0

    你必須在JSON中引用撇號,這是沒有辦法的。但是,如果使用「\」定義對象,通常可以將其轉義。或者,如果你願意,unicode escape \ u0027(我認爲)。 – StaxMan

    +0

    你不能做到這一點,看看jsonlint.com和json.org –

    +0

    你不能做什麼?查看json規範。 – StaxMan

    回答

    8

    我能想到的兩種可能性:

    創建application/json類型的腳本元素,注入你的模板數據進去,然後讀取其數據,例如。或者,在注入字符串之前手動轉義單引號,例如。

    simplejson.dumps(yourdata).replace("'", r"\'") 
    
    +0

    感謝您的回答!不過,我認爲這個解決方案更適合我的開銷。順便說一句,我們不能在腳本元素中使用id。 –

    +0

    爲什麼你不能在腳本元素中使用id? –

    +0

    http://stackoverflow.com/questions/2741441/giving-the-script-tag-an-id有關腳本元素的ID信息。 我也懷疑要麼是比字符串化,然後再解析JSON開銷少,雖然你當然應該基準,看看。 –

    相關問題