Thực hành cập nhật ứng dụng quản lý sử dụng JSON

 Thực hành tích hợp đọc ghi JSON vào chương trình 

B1. Tạo file data.json và thêm dữ liệu (từ sample project). 

B2. Tạo file data_io.py để viết hàm đọc ghi file 

import json 

 

def load_json_data(): 

    """ 

    Đọc dữ liệu 

    """ 

    anime_dict_data = list() 

    with open("data/data.json", "r") as json_in: 

        json_data = json.load(json_in) 

    anime_dict_data.extend(json_data) 

    return anime_dict_data 

 

def write_json_data(json_data): 

    """ 

    Viết dữ liệu 

    """ 

    with open("data/data.json", "w") as json_out: 

        json.dump(json_data, json_out) 

  • Hàm load_json_data() đọc dữ liệu từ file json trả về dạng danh sách. 

  • Hàm write_json_data() nhận vào dữ liệu viết dữ liệu đó vào file data.json. Khi các thao tác thêm, xóa, sửa thì sẽ gọi hàm này. 

B3: Đặt lại tên lớp quản lý từ AnimeList sang AnimeDatabase, thêm vào các câu

Thực hành tích hợp đọc ghi JSON vào chương trình 

B1. Tạo file data.json và thêm dữ liệu (từ sample project). 

B2. Tạo file data_io.py để viết hàm đọc ghi file 

import json 

 

def load_json_data(): 

    """ 

    Đọc dữ liệu 

    """ 

    anime_dict_data = list() 

    with open("data/data.json", "r") as json_in: 

        json_data = json.load(json_in) 

    anime_dict_data.extend(json_data) 

    return anime_dict_data 

 

def write_json_data(json_data): 

    """ 

    Viết dữ liệu 

    """ 

    with open("data/data.json", "w") as json_out: 

        json.dump(json_data, json_out) 

  • Hàm load_json_data() đọc dữ liệu từ file json trả về dạng danh sách. 

  • Hàm write_json_data() nhận vào dữ liệu viết dữ liệu đó vào file data.json. Khi các thao tác thêm, xóa, sửa thì sẽ gọi hàm này. 

B3: Đặt lại tên lớp quản lý từ AnimeList sang AnimeDatabase, thêm vào các câu lệnh có sử dụng đọc ghi file. 

from data import data_io 

 

class AnimeDatabase: 

    def __init__(self): 

        # Tạo danh sách chứa các đi tượng AnimeItem 

        self.anime_item_list = list() 

        # Đọc dữ liệu khi khi tạo 

        self.anime_dict_data = data_io.load_json_data() 

     

    def load_data(self): 

        """ 

        Phương thức chuyn đi dữ liệu đã READ vào danh sách đi tượng 

        """ 

        for anime_dict in self.anime_dict_data: 

            anime = AnimeItem(anime_id=anime_dict["id"], 

                              title=anime_dict["title"], 

                              release_date=anime_dict["release_date"], 

                              image=anime_dict["image"], 

                              link=anime_dict["link"]) 

            self.anime_item_list.append(anime) 

     

    def items_to_data(self): 

        """ 

        Phương thức chuyn đi danh sách đi tượng sang dữ liệu json 

        """ 

        json_data = list() 

        for anime in self.anime_item_list: 

            json_data.append(anime.__dict__) 

        return json_data 

     

    def get_first_item_by_title(self, anime_title): 

        """ 

        Tr v đi tượng AnimeItem có title là anime_title 

        """ 

        for anime_item in self.anime_item_list: 

            # Tìm thy 

            if anime_item.title == anime_title: 

                return anime_item 

        # Không tìm thy 

        return False 

     

    def add_item(self, anime_dict): 

        """ 

        Phương thức thêm một đi tượng AnimeItem mới 

        """ 

        # Tạo đi tượng  

        anime_dict["id"] = len(self.anime_item_list) 

        new_item= AnimeItem(anime_id=anime_dict["id"], 

                             title=anime_dict["title"], 

                             release_date=anime_dict["release_date"], 

                             image=anime_dict["image"], 

                             rating=anime_dict["rating"], 

                             link=anime_dict["link"]) 

        # Thêm vào danh sách phn t 

        self.anime_item_list.append(new_item) 

        # Thực hiện WRITE mi khi thay đi danh sách đi tượng 

        self.anime_dict_data.append(anime_dict) 

        data_io.write_json_data(self.anime_dict_data) 

     

    def edit_item(self, edit_title, new_dict): 

        """ 

        Phương thức sa một đi tượng AnimeItem có title là edit_title 

        """ 

        # Tìm đi tượng  

        matched = self.get_first_item_by_title(edit_title) 

        # Sa đi tượng 

        if matched: 

            matched.update(new_dict) 

            # Thực hiện WRITE mi khi thay đi danh sách đi tượng 

            self.anime_dict_data = self.items_to_data() 

            data_io.write_json_data(self.anime_dict_data) 

         

     

    def delete_item(self, delete_title): 

        """ 

        Phương thức xoá đi tượng AnimeItem có title là delete_title 

        """ 

        matched = self.get_first_item_by_title(delete_title) 

        if matched: 

            self.anime_item_list.remove(matched) 

            # Thực hiện WRITE mi khi thay đi danh sách đi tượng 

            self.anime_dict_data = self.items_to_data() 

            data_io.write_json_data(self.anime_dict_data) 

 

Bước 1: Tạo dữ liệu mẫu ban đầu (1, 2 ví dụ) và ghi vào prompt 

 

Bước 2: ChatGPT sẽ tạo các dữ liệu còn lại theo hướng dẫn 

 

Mới hơn Cũ hơn