写入JSON fi时Python出现双引号问题

2024-03-28 08:30:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将xml转换为JSON(下面提供了压缩版本的代码)。在

我面临的问题是一个标签,它可以有多个值(下面的例子)。我不能直接将它作为dict,因为键(NAME)可以有多个值。下面给出了代码生成的输出与预期输出的比较。在

python脚本:

import json

mylist = ['"Event" : "BATCHS01-wbstp01"', '"Event" : "BATCHS01-wbstrt01"']
tmpdict = {}
tmpdict['Events'] = mylist

with open('test.json','w') as fp:
    json.dump(tmpdict,fp,indent=4, sort_keys=False)

生成的输出:

^{pr2}$

预期输出:

{
    "Events": [
        {"Event" : "BATCHS01-wbstp01"},
        {"Event" : "BATCHS01-wbstrt01"}
    ]
}

Tags: 代码版本eventjson标签xmlevents例子
3条回答

代码:

您可以先将XML片段转换为dict,如下所示:

tmpdict['Events'] = [json.loads('{%s}' % x) for x in mylist]

测试代码:

^{pr2}$

结果:

{
    "Events": [
        {
            "Event": "BATCHS01-wbstp01"
        }, 
        {
            "Event": "BATCHS01-wbstrt01"
        }
    ]
}

您可以先将数据逐段转换为有效的JSON,然后将JSON转储到字符串或文件中,从而挽救数据:

tmpdict = {"Events" : [json.loads('{' + item + '}') for item in mylist]}
json.dumps(tmpdict)
'{"Events": [{"Event": "BATCHS01-wbstp01"}, {"Event": "BATCHS01-wbstrt01"}]}'

问题是您的mylist是一个字符串数组,而不是一个映射对象数组。 您需要删除外部报价以使其:

mylist = [{"Event" : "BATCHS01-wbstp01"}, {"Event" : "BATCHS01-wbstrt01"}]

我不明白为什么不能从XML生成这种结构。不管“key(NAME)是否可以有多个值”,这都相当简单。在

相关问题 更多 >