如何在使用 request.data 时摆脱 Python 中的“Json 文件导入错误”?
Posted
技术标签:
【中文标题】如何在使用 request.data 时摆脱 Python 中的“Json 文件导入错误”?【英文标题】:How to get rid of 'Json file Import Error' in Python while using request.data? 【发布时间】:2018-02-13 01:28:45 【问题描述】:Json 文件导入错误 Python:我正在使用 request.data 请求 json 文件但收到以下错误:
额外数据:第 1 行第 13 列 - 第 12 行第 2 列(字符 12 - 1388)
我的 Json 文件如下所示:
"items":
["ItemId":"1","EntityCode": "A", "Title": "abc","date":"2017-09-01",
"ItemId":"2","EntityCode": "A", "Title": "cba","date":"2017-09-01",
"ItemId":"3","EntityCode": "A", "Title": "bcd","date":"2017-09-01"]
这是我的输入,我将在以下代码中作为数据获得:
data=request.data
我也使用https://jsonlint.com/ 来验证这个 json 但它说
错误:第 1 行解析错误:“items”:
此数据来自 java 应用程序,我该如何解决?如有更多疑问,请随时回复。
【问题讨论】:
【参考方案1】:你应该试试
"items":
["ItemId":"1","EntityCode": "A", "Title": "abc","date":"2017-09-01",
"ItemId":"2","EntityCode": "A", "Title": "cba","date":"2017-09-01",
"ItemId":"3","EntityCode": "A", "Title": "bcd","date":"2017-09-01"]
没有括号它不是一个有效的json。
您是否尝试过 request.json 而不是 request.data ?如果您无法更正 json 文件,您也可以尝试 data = "0".format(request.data)
【讨论】:
【参考方案2】:有效的 JSON 将以花括号开头,因此您的 data=request.data
应该返回
"items": [
"ItemId": "1",
"EntityCode": "A",
"Title": "abc",
"date": "2017-09-01"
,
"ItemId": "2",
"EntityCode": "A",
"Title": "cba",
"date": "2017-09-01"
,
"ItemId": "3",
"EntityCode": "A",
"Title": "bcd",
"date": "2017-09-01"
]
从您在 OP 中提到的网站验证。在 JSONLint 网站上试试上面的 JSON。
【讨论】:
有没有办法在我请求数据后把它放上去。我可以在 python 中进行此更正吗? 是的,你可以简单地把它变成一本字典。如果你只想要“项目”,那么你可以像items = 'items':request.data['items']
那样做,但 request.data
不是已经给你字典了,或者,如果你想要来自客户端的 JSON 数据,那么你可以简单地调用 @987654325 @ 而不是 request.data
然后获取您的项目,就像您使用普通字典一样以上是关于如何在使用 request.data 时摆脱 Python 中的“Json 文件导入错误”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django REST 框架中修改 request.data