Json在Python中出现var给定错误

Json in Python with a var giving error

本文关键字:var 错误 Python Json      更新时间:2023-09-26

我有一个javascript文件,如下所示:

var abc= {
    "a" : {
            "label": "Monthly",
            "URL": "xyz.com",
            "ArchTag": "M",
            "archData": {
                "Feb 2016":"20160229",
                "Jan 2016":"20160129",
                "Dec 2015":"20151231"
}}};

所以我想要一种方法来编辑这个,并说添加一个新的月份细节。我猜这是javascript中的json。那么,如何才能以标准的方式编辑它呢。

如果你可以依赖每次看起来都像这样的数据,那么你可以去掉阻止它成为JSON的比特:

json_data = json.loads('{' + json_file.read().partition('{')[2])

(或使用正则表达式,或任何您喜欢的字符串操作)

您仍然应该注意,JavaScript与JSON不同,因此您需要有一些信心,即您得到的始终是将有效的JSON关联数组分配给变量。

另一方面,如果向您传递任意JavaScript,并期望您对其进行评估,那么您将面临更大的问题需要解决。如果有人给你var xyz = "Monthly"; var abc = {"label" : xyz, "URL" : "xyz" + "." + "com"}怎么办?

您需要一个JavaScript引擎来解决这个更普遍的问题,而不仅仅是一个JSON解析器。例如,js2py声称是一个用Python编写的完整JavaScript引擎,但我从未使用过它,所以我不能推荐或不推荐它

在执行来自不可信来源的代码时,除了您所要考虑的安全问题之外,如果您所做的只是从不可信来源解析JSON,还需要考虑这些安全问题。因此,如果您需要使用JavaScript引擎,请确保您正确理解它是如何被沙盒化的。

您的代码是Javascript,而不是JSON。。。

使用JS中的这段代码,您只需创建一个新的Object。

但是JSON不是一种语言。!Json是高效存储/传输数据的解决方案(作为辅助阵列)。

只是试着不定义abc:

您的JSON文件:

{
    "a" :
    {
            "label": "Monthly",
            "URL": "xyz.com",
            "ArchTag": "M",
            "archData":
            {
                "Feb 2016":"20160229",
                "Jan 2016":"20160129",
                "Dec 2015":"20151231"
            }
    }
}

如果不能删除文件的var abc,请在字符串中读取文件,删除字符串的第一个字符并加载新字符串。

  try:
        with open(file) as json_file:
            data = file.read()
            json_data = json.loads(data[9:])
            pprint(json_data)
    except Exception as e:
        print(e)

如果不是总是写var abc,那么从第一个{index.

开始字符串

实际上,由于您提到的var,文件内容不是json。您应该动态删除该部分:

json_text = json_file.read().replace('var abc=','')
json_data = json.dumps(json_text)
pprint(json_data)

您可以使用regex来替换var赋值项:

with open('file.txt') as json_file:
        data = json_file.read()
        data = re.sub(r'^var's*'S*'s*='s*', '', data)
        json_data = json.loads(data)