【问题标题】:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)json.decoder.JSONDecodeError:期望用双引号括起来的属性名称:第 1 行第 2 列(字符 1)
【发布时间】:2018-10-30 02:11:31
【问题描述】:

查看了以前的答案但无法解决,json.loads 不起作用。

代码:

import json
import operator

Data_to_python ={}

Bank_Data_note= open('Data_for_python.txt','r') # open file
Bank_Data_str = Bank_Data_note.read()
print(Bank_Data_str)
Data_to_python =json.loads(Bank_Data_str) # dictinary
print(Data_to_python)

来自文本文件的 json 格式:

{{"Transaction_1":{"Name":"Magnolia","Location":"Ayilon male","Amount":289,"Date":"5/5/18"},
{"Transaction_2":{"Name":"Landver,"Location":"Cinima-city Ramat-hashron","Amount":15,"Date":"15/5/18"},
{"Transaction_3":{"Name":"Superfarm","Location":"Shivat-hacochvim male","Amount":199,"Date":"7/5/18"},
{"Transaction_4":{"Name":"Printing solutions","Location":"Afeka tel-aviv","Amount":16,"Date":"25/5/18"}}

我知道了:

obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: 期望用双引号括起来的属性名称:第 1 行第 2 列 (字符 1)

【问题讨论】:

  • 那不是有效的 JSON。开头和结尾的双花括号应该是单花括号,Landver 后面少了一个引号。
  • 谢谢,做到了,但它仍然无法正常工作:obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting property name 用双引号括起来:第 2 行第 1 列 (字符 92)
  • 在开始时删除双括号是不够的。要么你必须把它变成一个值列表(通过使用方括号而不是大括号),把它变成一个平面对象(通过删除每行周围的大括号),或者......嗯,有很多可能的事情是排序的接近这个是有效的 JSON,但很难猜出你想要哪些东西。
  • 真正的问题是:这个文件是从哪里来的?它不是有效的 JSON,需要多次更改——并猜测这些更改应该是什么——才能解析。之后它可能仍然不是你真正想要的。如果您编写了生成此文件的代码,则需要修复 那个 代码。或者,如果您在文本编辑器中手动创建文件,您应该使用更智能的编辑器来帮助您正确格式化 JSON,或者使用像 JSONLint 这样的网站。
  • 什么是“正确的”?这应该是单元素字典的列表还是平面字典?而且,更重要的是:它是从哪里来的?某些人或某些代码生成了此文件。您要求我们做的是猜测那个人或编写该代码的人的意图。你可能知道那个人是谁,或者可以看到那个代码——或者至少你知道为什么要使用他们的输出——所以你可以比我们猜得更好。或者你可以告诉我们你知道的。

标签: python json


【解决方案1】:

您的 JSON 数据中有太多大括号!它缺少双引号。这是一个修复后的版本,以及一些 json 加载和转储代码来测试它。

import json

data = '''
{
"Transaction_1": {"Name":"Magnolia","Location":"Ayilon male","Amount":289,"Date":"5/5/18"},
"Transaction_2": {"Name":"Landver","Location":"Cinima-city Ramat-hashron","Amount":15,"Date":"15/5/18"},
"Transaction_3": {"Name":"Superfarm","Location":"Shivat-hacochvim male","Amount":199,"Date":"7/5/18"},
"Transaction_4": {"Name":"Printing solutions","Location":"Afeka tel-aviv","Amount":16,"Date":"25/5/18"}
}'''


obj = json.loads(data)
print(obj)

print('- ' * 20)

# Convert back to JSON for nicer printing
print(json.dumps(obj, indent=4))

输出

{'Transaction_1': {'Name': 'Magnolia', 'Location': 'Ayilon male', 'Amount': 289, 'Date': '5/5/18'}, 'Transaction_2': {'Name': 'Landver', 'Location': 'Cinima-city Ramat-hashron', 'Amount': 15, 'Date': '15/5/18'}, 'Transaction_3': {'Name': 'Superfarm', 'Location': 'Shivat-hacochvim male', 'Amount': 199, 'Date': '7/5/18'}, 'Transaction_4': {'Name': 'Printing solutions', 'Location': 'Afeka tel-aviv', 'Amount': 16, 'Date': '25/5/18'}}
- - - - - - - - - - - - - - - - - - - - 
{
    "Transaction_1": {
        "Name": "Magnolia",
        "Location": "Ayilon male",
        "Amount": 289,
        "Date": "5/5/18"
    },
    "Transaction_2": {
        "Name": "Landver",
        "Location": "Cinima-city Ramat-hashron",
        "Amount": 15,
        "Date": "15/5/18"
    },
    "Transaction_3": {
        "Name": "Superfarm",
        "Location": "Shivat-hacochvim male",
        "Amount": 199,
        "Date": "7/5/18"
    },
    "Transaction_4": {
        "Name": "Printing solutions",
        "Location": "Afeka tel-aviv",
        "Amount": 16,
        "Date": "25/5/18"
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2022-12-14
    • 2021-12-31
    • 2018-08-02
    • 2019-01-04
    相关资源
    最近更新 更多