This is the class I am currently using
class Book:
def __init__(self, title: str, author: str, isbn: int, genre: str, numCopies: int):
self._title = title
self._author = author
self._isbn = isbn
self._genre = genre
self._numCopies = numCopies
def __str__(self): # all the properties of the class Book()
return f'Title: {self._title}\nAuthor: {self._author}\nISBN: {self._isbn}\nGenre: {self._genre}\nNumber Of Copies: {self._numCopies}\n'
json file format is given to me like this:
[
{
"title": "How to love",
"author": "vagabondage3",
"isbn" : 9832,
"genre" : "Comedy",
"numofcopies" : 2
},
{
"title": "How to eat",
"author": "belabor",
"isbn" : 2345,
"genre" : "Documentary",
"numofcopies" : 3
}
]
the objective is to create a class instance book = Book("title","author",0,"genre",0)
and then append it to the json file like this:
[
{
"title": "How to love",
"author": "vagabondage3",
"isbn" : 9832,
"genre" : "Comedy",
"numofcopies" : 2
},
{
"title": "How to eat",
"author": "belabor",
"isbn" : 2345,
"genre" : "Documentary",
"numofcopies" : 3
},
{
"title": "title",
"author": "author",
"isbn" : 0,
"genre" : "genre",
"numofcopies" : 0
}
]
And to be fair I saw similar solutions but I can't fully understand anything
CodePudding user response:
You can use json.loads to get a dictionary from JSON, and then add a new object as in a regular dictionary.
class Book:
def __init__(self, title: str, author: str, isbn: int, genre: str, numCopies: int):
...
def get_dict(self):
dict_obj = {
"title": self._title,
"author": self._author,
"isbn" : self._isbn,
"genre" : self._genre,
"numofcopies" : self.__numCopies
}
return dict_obj
Now it is enough to call the get_dict method to get the dictionary, and through "append", add it to the list.
if __name__ == '__main__':
with open('your.json', 'r') as f:
books_json = f.read()
books = json.loads(books_json)
book = Book('title', 'author', 0, 'genre', 0)
books.append(book.get_dict())
with open('your.json', 'w') as f:
f.write(json.dumps(books))