在Python JSON中对Javascript变量名进行编码
我正在编写一个生成JSON并将其输出到文件的程序。 我输出到文件的第一个内容是以下JSON字符串:
var jsonStyle = {'color': '#004070',
    'weight': 2,
    'opacity': 0.9}
  然后我使用Python JSON库生成JSON输出。  这是我传入json.dumps的Python对象: 
js = {'type': 'Feature',
      'properties':
          {'style': 'jsonStyle'},
      'geometry': geomJSON}
我想要的文本输出是:
js = {'type': 'Feature',
      'properties':
          {'style': jsonStyle},
      'geometry': geomJSON}
  通过这种方式,我可以在输出文件的顶部编辑jsonStyle来更改所有后续JSON元素的样式。  问题是,目前我构造JSON对象输出'jsonStyle' ,这是一个字符串,而不是Javascript变量名。  如果我将样式键设置为我输出的样式字符串的字典版本,则会为每个后续的JSON元素包含该JSON对象。  我不知道如何让style引用一个Javascript变量名称,当我在Python中进行编码时。 
我宁愿不必为此做字符串操作,但我可以回避这一点。
编辑:
我想我并没有真正使用JSON。 我将它们作为变量输出到一个Javascript文件,以便我们可以将它们作为JSON对象包含在另一个Javascript文件中。 看起来我要么需要使用YAML,要么只是做某种字符串编辑,而放弃严格的JSON编码。
您要编写的格式不是JSON。 该格式非常具体,可以是json对象中的值,它不具有JavaScript变量的概念。 你试图写的是JavaScript,而不是JSON - 这是不一样的。
所以你可以简单地尝试删除你的特殊变量的引号,或者编写你自己的序列化程序。
  如何使用json.dumps发送第一个jsonStyle JSON?  更改变量jsonStylePyObject并将其反映到所有其他JSON中。  如下所示: 
jsonStylePyObject = {'color': '#004070',
    'weight': 2,
    'opacity': 0.9}
myFile.write(json.dumps(jsonStyle))
#then use it normally
js = {'type': 'Feature',
      'properties':
          {'style': jsonStylePyObj},
      'geometry': geomJSON}
myFile.write(json.dumps(jsonStr))
  或者你可以使用字符串替换。  这实际上是不好的,并没有真正的建议。  你可以在style字段中有一个唯一的字符串,例如`“MY_UNIQUE_STRING $#!@#”,并对其进行字符串替换。  就像是: 
jsonStr = json.dumps({'type': 'Feature',
          'properties':
              {'style': "MY_UNIQUE_STRING$#!@#"},
          'geometry': geomJSON})
quotes_char = "'"
jsonStr = jsonStr.replace("%sMY_UNIQUE_STRING$#!@#%s"%(quotes_char, quotes_char), "jsonStyle")
myFile.write(jsonStr) 
                        链接地址: http://www.djcxy.com/p/47141.html
                        上一篇: Encode Javascript variable name in Python JSON
下一篇: How to write a custom solution using a python package, modules etc
