gpt4 book ai didi

python - 如何修复此错误 json.decoder.JSONDecodeError : Python

转载 作者:行者123 更新时间:2023-12-04 16:07:30 25 4
gpt4 key购买 nike

有人能告诉我为什么这段代码只工作一次而在第二次我得到一个错误我的代码:

import json

counter_value = 1
data= {}
data['test_device']= []
data['test_device'].append({ "device": "gas_zaehler", "measure": "energy","value": counter_value})

with open('test.json', 'a') as feedjson:
json.dump(data, feedjson)
feedjson.write('\n')
feedjson.close()

with open('test.json') as feedjson:
json_data = json.load(feedjson)
for i in json_data['test_device']:
print("device" + i['device'] )

在第二次执行时我得到了这个错误:

  File "/usr/lib/python3.5/json/decoder.py", line 342, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 78)

它与下面这个链接不是同一个问题,因为我没有两个词典{}{}: Python json.loads shows ValueError: Extra data

最佳答案

阅读您的代码,我怀疑您的真实意图是:

  • test.json 应该只包含一个字典。
  • 该字典应该有一个键“test_device”,其中包含一个列表。
  • 每次程序执行时,都应将一个新元素附加到该列表。

如果是这种情况,那么您不应该每次都创建一个新词典并将其附加到文件中。您应该编写一个完全覆盖其旧版本的字典。

import json

try: #does the data structure exist yet? Let's try opening the file...
with open("test.json") as feedjson:
json_data = json.load(feedjson)
except FileNotFoundError: #this must be the first execution. Create an empty data structure.
json_data = {"test_device": []}

json_data['test_device'].append({ "device": "gas_zaehler", "measure": "energy","value": 1})

#overwrite the old json dict with the updated one
with open("test.json", "w") as feedjson:
json.dump(json_data, feedjson)

for i in json_data['test_device']:
print("device" + i['device'] )

结果:

C:\Users\Kevin\Desktop>test.py
devicegas_zaehler

C:\Users\Kevin\Desktop>test.py
devicegas_zaehler
devicegas_zaehler

C:\Users\Kevin\Desktop>test.py
devicegas_zaehler
devicegas_zaehler
devicegas_zaehler

关于python - 如何修复此错误 json.decoder.JSONDecodeError : Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48116337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com