Внедрение MVC Design Pattern в Python3 - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь реализовать MVC, используя Python3 .8. Я использовал этот пример 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

view.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()

Data.txt

[{
    "first": "abc",
    "last": "xyz"
}]

Пожалуйста, помогите мне в этом и помогите найти ошибку. Заранее спасибо.

1 Ответ

0 голосов
/ 23 апреля 2020

Я решил проблему сам. Основной проблемой была загрузка JSON элементов дважды в model.py, как показано ниже:

        jsonList = json.loads(database.read())
        for item in jsonList:
            item = json.loads(item)

Теперь я решил ее, удалив item = json.loads(item).

...