PYTHON中Json格式的数据存在问题

2024-04-27 20:50:26 发布

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

我遇到了一个问题:

如何将字符串转换为json。我尝试了很多方法,但没有一种对我有效。我使用了:

Json.load()Json.load()拆分()

他们都没有为我工作过。json格式似乎有问题

我想从那个字符串中提取数据,但我无法处理它,因为我无法为它提供json或字典格式来操作它。它只将所有信息作为单个连接字符串提供给我

我的代码:

from flask import Flask, request,jsonify
from flask import request
import json



app = Flask(__name__)

@app.route('/products', methods=['POST'])


def some_function():

    data1 = request.data
    data2= data1.decode("utf-8")

    print(data1)  #Raw Data
    print(data2)  #Data Decode
    print(json.loads(data2)) 
    
 
    return "hi"



if __name__=='__main__':
    app.run(host='192.168.1.1',debug=True, port=1000)

这是控制台在执行程序时给我的错误:

192.168.1.117 - - [13/May/2021 09:03:14] "POST /products HTTP/1.1" 500 -
Traceback (most recent call last):
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 2450, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 1867, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\Black Meza\Desktop\Products_Flask\app.py", line 18, in some_function
    print(json.loads(data2))  #Data Decode
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Black Meza\AppData\Local\Programs\Python\Python39\Lib\json\decoder.py", line 340, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 335 (char 334)

如果我从我的代码打印(json.loads(data2))中删除并再次运行代码,请向我展示:

b'{"Protocol":"jsonTS","sId":"0053003C3438510935383135","Packets":[{"Id":30117,"Type":"UploadPumpTransaction","Data":[{"DateTime":"2021-05-10T16:19:48","Pump":1,"Nozzle":1,"Transaction":60858,"UserId":1,"Volume":9.01,"Amount":10.00,"Price":1.11,"TotalVolume":0,"TotalAmount":0,"DateTimeStart":"2021-05-10T16:19:32","TCVolume":0}]}]}\r\x00'
{"Protocol":"jsonTS","sId":"0053003C3438510935383135","Packets":[{"Id":30117,"Type":"UploadPumpTransaction","Data":[{"DateTime":"2021-05-10T16:19:48","Pump":1,"Nozzle":1,"Transaction":60858,"UserId":1,"Volume":9.01,"Amount":10.00,"Price":1.11,"TotalVolume":0,"TotalAmount":0,"DateTimeStart":"2021-05-10T16:19:32","TCVolume":0}]}]}

有没有办法让数据采用Json或字典格式而不是字符串格式? 我想提取数据以将其保存到数据库中。 在字符串格式中,我无法使用它,因为所有内容都打包在一个字符串中


Tags: inpyjsonappflaskliblocalline