2014-01-10 25 views
1

我承認Python的json模塊用於編寫json。我正在使用該模塊來生成簡單的Javascript代碼(即,這是無效的json)。大多數情況下,這工作正常,但我需要一個乾淨的方式通過dumps傳遞變量名稱。例如一種方式來寫這樣的東西:黑客json.dumps輸出未加引號的字符串?

>>> json.dumps({"varName":F("varReference")}) 
'{"varName": varReference}' 

但我無法弄清楚如何防止json添加引號。我能想到的最好的辦法是用F填充一些稀有符號的字符串,然後在dumps的輸出上執行正則表達式替換。還有其他建議嗎?我在jsonsimplejson中看到的所有內容都需要可序列化的json對象。

+0

爲什麼你不想要它作爲一個字符串?那仍然是變量名稱?你發佈的內容不是有效的json ...(所以你可能很難將它加載到js中,即使你成功剝離了引號) –

+1

我認爲這是一個總體上不好的方法。更好的方法可能是在JavaScript端創建一個'name - > value'映射,然後可以使用'varName'的值來查找該映射中的值。 –

+0

我打算將輸出用作javascript,而不是json。 – amos

回答

0

一種方法可能不是嘗試在服務器端實現,但總是與JSON通信,然後讓JavaScript從這個JSON中找出如何構建最終對象。

  1. 將JavaScript輸出爲JSON映射「variablename」:「variablevalue」。

  2. 通過遍歷對象鍵並根據全局變量中的「variableablue」解析每個鍵的新值,評估JavaScript端的變量值。

    Object.getOwnPropertyNames(obj).forEach(function(name, idx, array) { 
         var varName = obj[name]; 
         obj[name] = window[varName]; // Evaluate variable value from global window scope 
    });) 
    

在例子中,forEach()是EcmaScript的5,可能需要對舊的瀏覽器polyfills。