尝试使用Json.load inPython加载时出现Json解码器错误

尝试使用Json.load inPython加载时出现Json解码器错误,python,json,Python,Json,我正在尝试使用下面的代码加载一个格式为JSON的文本文件 with open('orderdata/ETHUSDTorder.txt') as json_file: data = json.load(json_file) actualdata=data['average'] print(actualdata) print("read complete") 但它给了我以下的错误 Traceback (most recent call last):

我正在尝试使用下面的代码加载一个格式为JSON的文本文件

with open('orderdata/ETHUSDTorder.txt') as json_file:
    data = json.load(json_file)
    actualdata=data['average']
    print(actualdata)
print("read complete")
但它给了我以下的错误

Traceback (most recent call last):
  File "C:\Users\pavan.alur\PycharmProjects\pythonProject\main.py", line 30, in <module>
    data = json.load(json_file)
  File "C:\Users\pavan.alur\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 293, in load
    return loads(fp.read(),
  File "C:\Users\pavan.alur\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Users\pavan.alur\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\pavan.alur\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 5 (char 6)
我试图获得“平均”值,JSON响应是从binance api接收的 响应是使用ccxt库接收的,我正在尝试打印执行的顺序,并将响应以json格式保存在文本文件中。如有任何帮助,将不胜感激

我对python有点陌生,所以请在这里耐心听我说


提前谢谢。祝您度过愉快的一天:)

您需要双引号才能使其成为有效的JSON

有JSON验证器和美化网站,你可以尝试。
例如,jsonlint.com就是其中之一。

我知道了。感谢Ben的帮助,我只需要使用
dump
格式化所有内容,然后
load
就可以完美地工作了。愚蠢的我感谢所有人的帮助,祝你有美好的一天:)

如果你的文件确实包含单引号,那么它就不是有效的JSON。事实上,您的文件看起来更像python dict的
repr
,而不是json。你可能想要
literal\u eval
it而不是
json.load
@rdas你能告诉我如何使用你提到的方法获得平均值,考虑到我将无法更改收到的响应。我将把它传输到文件中,并尝试从中检索“平均”值。我试着抬头看,但还是没能把头绕过去。ThanksHi@Ben,这是我从服务器接收到的格式,我将它保存为文本文件。是否有任何方法可以检索“average”的值,以便在代码中使用它进行进一步计算。谢谢您的帮助:)让我问一下您是否正在接收文本对象或
dict
。如果是
dict
,您必须按照
json.dump('filename.json',obj)
的思路将其存储在一个可以由json解析器正确解析的表单中。Python对象和json对象之间的另一个关键区别是,json中没有
None
,但必须是
null
。我用
替换了
,用
null
替换了
None
,并通过JSON lint程序运行它,它正确地读取了它。
{
    'info': {
        'symbol': 'ETHUSD',
        'orderid': '20556566',
        'orderlistid': '-1',
        'clientorderid': 'TXgguEidjfF9eLKF',
        'transactiontime': '1619882734',
        'price': '0.00',
        'origqty': '0.00500',
        'executedQty': '0.005000',
        'commutativeQuoteQty': '143.06',
        'status': 'Filled',
        'timeInforce': 'GTC',
        'type': 'MARKET',
        'side': 'buy',
        'fills': [{
            'price': '2861.34',
            'qty': '0.030',
            'comission': '0.0001',
            'comissionAsset': 'BNB',
            'tradeid': '5722834'
        }, {
            'price': '2761.23',
            'qty': '0.019',
            'comission': '0.0001',
            'comissionAsset': 'BNB',
            'tradeid': '5722834'
        }]
    },
    'id': '2044343',
    'clientorderid': 'TXgguEidjfF9eLKF',
    'timestamp': '1619882734',
    'datetime': '2021-06-10T20:21:234',
    'lasttradetimestamp': None,
    'symbol': 'ETHUSD',
    'type': 'MARKET',
    'timeInforce': 'GTC',
    'postonly': 'false',
    'side': 'buy',
    'price': '2861.23',
    'stopprice': 'None',
    'amount': 0.05,
    'cost': 143.06,
    'average': 2861.23,
    'filled': 0.05,
    'remaining': 0.0,
    'status': 'closed',
    'fee': {
        'cost': 0.00013,
        'currency': 'BNB'
    },
    'trades': [{
        'info': {
            'price': '2861.17',
            'qty': '0.0330',
            'comission': '0.0001',
            'commissionAsset': 'BNB',
            'tradeid': '2383487'
        },
        'timestamp': None,
        'datetime': None,
        'symbol': 'ETHUSD',
        'id': None,
        'order': None,
        'type': None,
        'side': None,
        'takerOrMaker': None,
        'price': 2861.23,
        'amount': 0.034,
        'cost': 87.534,
        'fee': {
            'cost': 0.0034,
            'currency': 'BNB'
        }
    }, {
        'info': {
            'price': '2861.23',
            'qty': '0.0019',
            'comission': '0.0023',
            'comissionAsset': 'BNB',
            'tradeid': '453233'
        },
        'timestamp': None,
        'datetime': None,
        'symbol': 'ETHUSD',
        'id': None,
        'order': None,
        'type': None,
        'side': None,
        'takerOrMaker': None,
        'price': 2861.39,
        'amount': 0.01941,
        'cost': 55.53,
        'fee': {
            'cost': 6.737,
            'currency': 'BNB'
        }
    }]
}