2014-01-10 26 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。