menyimpan json pada object python

saya ingin bertanya apakah ada yang salah dari cara menyimpan data json pada object python
berikut kode saya:
import json
class Data1:
    def __init__ (self, Date, Door, Name, Status, Time):
        self.Name = Name
        self.Date = Date
        self.Time = Time
        self.Door = Door
        self.Status = Status

    @classmethod
    def from_json(cls, json_string):
        json_dict = json.loads(json_string)
        return cls(**json_dict)
    
    def __repr__ (self):
        return f'<Data1 {self.Name}>'
def desJson(json_string):
    json_string = json_string.replace('b','')
    json_string = "'"+"'"+json_string+"'"+"'"
    print(json_string)
    data = Data1.from_json(json_string)
    print(data.Name)
    print(data.Date)
    print(data.Time)
    print(data.Door)
    print(data.Status)

    json_string =(str(msg.payload)) 
    desJson(json_string) #didalam json_string terdapat string format json : '{"Date":"notSetA","Door":"Pintu Kamar","Name":"Denta","Status":"Locked","Time":"notSetA"}' 
tetapi saat melakukan print seperti print(data.Name) tidak mengeluarkan apa-apa akan tetapi saat print(json_string) data json_string tidak kosong, kira-kira kenapa ya? terimakasih sebelumnya

avatar marcellusdenta_google

Ditanyakan oleh @marcellusdenta_google

1 Kontribusi 0 Poin

Login untuk menanggapi


Jawaban

Halo,
saya sudah mereplika kodingan di atas, mengeditnya sedikit, dan dapat dijalankan dengan lancar
import json

class Data1:
    def __init__(self, name, address):
        self.name = name
        self.address = address

    @classmethod
    def from_json(cls, json_string):
        json_dict = json.loads(json_string)
        return cls(**json_dict)

    def __repr__(self):
        return f'Namanya adalah {self.name}, tinggal di {self.address}'

def desJson(json_string):
    # saya membuang dua baris pertama pada fungsi ini
    # dari kodingan agan
    print(json_string)
    data = Data1.from_json(json_string)
    print(data)

desJson('{"name":"kodergan", "address":"rahasia"}')

Dari kodingan milik agan, apakah agan memang sengaja memanggil desJson() dari dalam desJson() sendiri? (rekursif)

Kurang lebih seperti itu, semoga membantu
avatar kodergan

Dijawab oleh @kodergan

27 Kontribusi 27 Poin

  • sebelumnya terimakasih gan, jdi begini nilai pada json string itu saya langsung terima dalam bentuk json format dri server, jadi jsonnya tidak saya tulis sendiri, sehingga saya ingin menyimpan jsonfromat tersebut ke object json string, lalu saya pecah lgi json format tadi dan saya masukkan nilainya ke object-object. tetapi object2 itu malah jadi kosong padahal jsonformat dalm object json string itu ada isinya. itu kira2 kenapa ya? - @marcellusdenta_google
  • Bisa coba diprint manual gan di tiap-tiap bagiannya, misal sebelum masuk ke fungsi desJson(), ketika di dalam fungsi desJson(), dst. barangkali bisa ketemu salahnya dimana. (Karena tidak terlalu berpengaruh juga baik asal data dari server ataupun buatan sendiri, selama formatnya sama, maka seharusnya tidak ada masalah ketika masuk ke dalam fungsi terkait) - @kodergan

Login untuk menanggapi


Login untuk gabung berdiskusi