answer13_2_1.py

import json

class Cat:
    """猫を表すクラス。

    属性:
        name(str):猫の名前。
        weight(float):猫の体重(kg)。
    """

    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def show_info(self):
        print(f"名前は{self.name}、{self.weight} kgです")


cats = [Cat("みけ", 3.0), Cat("もも", 4.5)]

# catsの要素それぞれから辞書を作り、リストにする
data = [{"name": c.name, "weight": c.weight} for c in cats]
# そのリストをJSONとしてファイルに出力する
with open("cats.json", "w", encoding="utf-8") as file_obj:
    json.dump(data, file_obj, ensure_ascii=False)

# 章末問題 13章【2】(1)解答例
#
# 22行目で、辞書を要素とするリストを作り、25行目でそれを
# JSONエンコードしてファイルに出力しています。リストの各要素が辞書で、
# 辞書の各項目は文字列(名前)や浮動小数点数(体重)です。
# リストを25行目で書き出すデータとして指定することで、
# そこから参照されている辞書と、それがさらに参照されている文字列や
# 浮動小数点数が、JSONにエンコードされてファイルに出力されます。