在python中加载有效的json文件会引发错误JSONDecodeError:应为值:行1列1(char 0)

2024-05-16 08:45:23 发布

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

我有一个json文件,根据json linter是有效的,如下所示:

[{
    "Device": {
        "BNCode": "BN2003612",
        "DeviceID": 3700,
        "ModelName": "2004c",
        "VariantName": "2004c",
        "supplier": {
            "SupplierCode": "ALCATEL",
            "SupplierID": 3,
            "SupplierName": "Alcatel",
            "created_at": "2019-08-14T14:47:00",
            "last_updated_by": "",
            "updated_at": "2019-08-14T14:47:00"
        }
    },
    "MarketPlayer": {
        "DetailedMarketPlayer": "WestCom",
        "MarketPlayerID": 3968,
        "MarketPlayerName": "Amazon"
    },
    "PriceUrl": "",
    "Sales_Price": {
        "CurrencyCode": "EUR",
        "EUR": 6.658333333333334e+001,
        "local_currency": 6.658333333333334e+001
    },
    "ScreenshotUrl": "",
    "Source": "OFFICIENCE",
    "TimeStamp": "Date"
}, {
    "Device": {
        "BNCode": "BN2003833",
        "DeviceID": 3800,
        "ModelName": "Nokia 130",
        "VariantName": "Nokia 130 8MB LTE DS",
        "supplier": {
            "SupplierCode": "HMD",
            "SupplierID": 45,
            "SupplierName": "Hmd",
            "created_at": "2019-08-14T14:47:00",
            "last_updated_by": "",
            "updated_at": "2019-08-14T14:47:00"
        }
    },
    "MarketPlayer": {
        "DetailedMarketPlayer": "MediaMarkt",
        "MarketPlayerID": 3815,
        "MarketPlayerName": "MediaMarkt"
    },
    "PriceUrl": "",
    "Sales_Price": {
        "CurrencyCode": "EUR",
        "EUR": 2.665833333333333e+001,
        "local_currency": 2.665833333333333e+001
    },
    "ScreenshotUrl": "",
    "Source": "OFFICIENCE",
    "TimeStamp": "Date"
}]

要将json文件导入python,我使用以下代码:

^{pr2}$

我得到了错误:JSONDecodeError:期望值:行1列1(char 0)。在

当我使用json.loads函数我得到错误:TypeError:JSON对象必须是str、bytes或bytearray,而不是TextIOWrapper。在

编辑:我想我注意到,当将数据从文件直接复制到这里并将其格式化为代码时,JSON正在“修复”。所以你们不能重现我的错误。我附上了这张图片的代码实际是什么样子,似乎有更多的空白,我认为这是导致问题,所以任何关于如何修复它的想法都是受欢迎的。 enter image description here

链接到文件:https://file.io/yKw7tp


Tags: 文件代码jsondevice错误euratsupplier
1条回答
网友
1楼 · 发布于 2024-05-16 08:45:23

如果您正在使用上面的prices_json.txt文件,那么您应该可以让它正常工作。我已经测试过了,它正在工作。看这个repl。在

您还可以尝试将完整的文件作为字符串传递给json.loads()方法,将其转换为json对象。在

data_dict = json.loads(f.read())

编辑

问题的真正原因是文件本身。当我试图使用f.read()打印它时,它给出了如下输出:

^{pr2}$

您需要在打开文件时使用utf-16作为编码参数来解决问题。在

使用json.loads方法:

import json
with open('prices_json.txt',encoding="utf-16") as f:
    data_dict = json.loads(f.read())
print(data_dict)

使用json.load方法

import json
with open('prices_json.txt',encoding="utf-16") as f:
    data_dict = json.load(f)
print(data_dict)

相关问题 更多 >