在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