繁体   English   中英

我想打印字典 json 文件内容,但出现错误字符串索引必须是整数

[英]I want to print out dictionary json file content but i get an error string indices must be integers

class 人是基地 class。

import json

class Person():
    """
    class Person
    """
    def __init__(self, name, ssn, home_address=""):
        """
        init method, constructor
        """
        self.name = name
        self._ssn = ssn
        self.home_address = home_address
    
# class teacher inherits from class teacher
# 
class Teacher(Person):
    """
    class Teacher
    """
    def __init__(self, name, ssn, home_address=""):
        """
        init method, constructor
        """
        super().__init__(name, ssn, home_address)

    @classmethod
    def from_json(cls, json_data):
        """
        class method to read data from json file
        """
        #print(json_data)
        return cls(json_data["name"], json_data["ssn"], json_data["courses"])

if __name__ == "__main__":
    teacher_json = json.load(open('teacher.json', encoding='utf-8'))
    teachers = []
    print(teacher_json)
    for k in teacher_json:
        #print(k)
        print(teachers.append(Teacher.from_json(k))
    print(teacher_json)

和 json(teacher.json) 文件内容:

{
    "name": "Steve",
    "ssn": "482075-3621",
    "courses": [
        "oopython",
        "oophp"
    ]
}

teacher.json 包含创建和返回 class Teacher 的新实例的数据,但是当我看到我的代码时,我注意到我的 JSON 文件是一个字典,我试图将它作为列表打印出来,但我得到了这个错误string indices must be integers结果应该是这样的: 姓名:史蒂夫 SSN:482075-3621 课程:oopython,oophp

这个解决



import json

class Person():
    """
    class Person
    """
    def __init__(self, name: str, ssn: str, home_address=[]):
        """
        init method, constructor
        """
        self.name = name
        self._ssn = ssn
        self.home_address = home_address
    
# class teacher inherits from class teacher
# 
class Teacher(Person):
    """
    class Teacher
    """
    def __init__(self, name: str, ssn: str, home_address=[]):
        """
        init method, constructor
        """
        super().__init__(name, ssn, home_address)

    @classmethod
    def from_json(cls, json_data):
        """
        class method to read data from json file
        """
        return cls(str(json_data["name"]), str(json_data["ssn"]), list(json_data["courses"]))

if __name__ == "__main__":
    teacher_json = json.load(open('teacher.json', encoding='utf-8'))
    teachers = []
    for k in teacher_json:
        teacher = Teacher.from_json(teacher_json)
        data = teachers.append(teacher)

    # print(teachers[0].name)
    print(teachers)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM