我有一个包含此类无效 json
数据的文件(为清晰起见,它已被删除):
[
{
"orderID": 90,
"orderDate": '2017-05-10', #issue №1
"clientName": "Mr. Bean",
"clientPhoneN": "123-4567",
"orderContents": [
{
"productID": 05, #issue №2
"productName": "Bicycle",
"quantity": 1,
"price": 8000
},
{
"productID": 23,
"productName": "helmet",
"quantity": 2,
"price": 1000
}
],
"orderCompleted": true
}
]
我尝试在python
中打开它并将其转换为词典列表,但没有成功。根据具体情况,我会得到不同的错误。我需要花费太多空间来概述我的所有尝试和结束错误。
我在这里有两个问题:
问题№1 - orderDate
值中的单引号。
结果如下:
JSONDecodeError: Expecting value
问题№2 - 零前导productID
。
结果如下:
JSONDecodeError: Expecting ',' delimiter
我可以对这些问题进行硬编码,但我觉得这不是真正的pythonic方式。
是否有“漂亮”选项可以打开并将此数据文件转换为词典列表?
我很可能希望将productID
数据typa保留为integer
,但如果不可能,str
也可以。
答案 0 :(得分:1)
试试demjson
包:
from demjson import decode
decode("""[
{
"orderID": 90,
"orderDate": '2017-05-10',
"clientName": "Mr. Bean",
"clientPhoneN": "123-4567",
"orderContents": [
{
"productID": 05,
"productName": "Bicycle",
"quantity": 1,
"price": 8000
},
{
"productID": 23,
"productName": "helmet",
"quantity": 2,
"price": 1000
}
],
"orderCompleted": true
}
]""")
你会得到:
[{'clientName': 'Mr. Bean',
'clientPhoneN': '123-4567',
'orderCompleted': True,
'orderContents': [{'price': 8000,
'productID': 5,
'productName': 'Bicycle',
'quantity': 1},
{'price': 1000, 'productID': 23, 'productName': 'helmet', 'quantity': 2}],
'orderDate': '2017-05-10',
'orderID': 90}]