python-3.x - Python3中MVC设计模式的实现
问题描述
我正在尝试使用 Python3.8 实现 MVC。我已使用此https://www.tutorialspoint.com/python_design_patterns/python_design_patterns_model_view_controller.htm Python2 的示例进行练习。但是,我收到以下错误:
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我的代码如下:model.py
import json
class Person:
def __init__(self, first = None, last = None):
self.first = first
self.last = last
def name(self):
return ('%s %s' %(self.first, self.last))
@classmethod
def getAll(self):
database = open('data.txt', 'r')
result = []
jsonList = json.loads(database.read())
for item in jsonList:
item = json.loads(item)
person = Person(item['first'], item['last'])
result.append(person)
return result
视图.py
from model import Person
def showAllView(list):
print ('In our db we have %i users. Here they are:' % len(list))
for item in list:
print (item.name())
def startView():
print ('MVC - the simplest example')
print ('Do you want to see everyone in my db?[y/n]')
def endView():
print ('Goodbye!')
控制器.py
from model import Person
import view
def showAll():
#gets list of all Person objects
people_in_db = Person.getAll()
return view.showAllView(people_in_db)
def start():
view.startView()
answer = input('Enter y or n')
if answer == 'y':
return showAll()
else:
return view.endView()
if __name__ == "__main__":
start()
数据.txt
[{
"first": "abc",
"last": "xyz"
}]
请指导我并帮助我找到错误。提前致谢。
解决方案
我自己解决了这个问题。主要问题是在 model.py 中两次加载 JSON 元素,如下所示:
jsonList = json.loads(database.read())
for item in jsonList:
item = json.loads(item)
现在我已经通过删除来解决它item = json.loads(item)
。
推荐阅读
- ssh - srun:错误:Slurm 控制器没有响应,正在休眠并重试
- c - 这个错误是什么意思?“预期的标识符或'('”
- javascript - 如何在angular8中制表后使用shift + tab时选择整个值
- c - 为什么下面的代码打印 b =5 而不是 b =4 因为它在操作后递减?
- bixby - 如何使用 dates.getHour 从当前时间获取小时
- autocomplete - 输入键时 Material-ui 自动完成移动到下一个元素
- machine-learning - 在文本分类中使用基于多列的类
- amazon-web-services - SageMaker - CloudFormation 中 SageMaker 实体的说明
- android - 有没有办法在后台启动位置管理器?
- activemq-artemis - 用户:XYZ 在地址上没有权限='SEND'