在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