Json Veri Düzenleme Hakkında

Merhaba değerli üstatlar. Json verilerimi düzenlemem gerektiği söyleniyor, ancak ben hala nerede hata yaptığımı bilemedim. Uğraştım bulamadım da, bu yüzden yardımınıza ihtiyacım var.

Yani verilerimin başında " karakterleri var. Örnek ( “user_id” ) gibi.
Bunun üstesinden nasıl gelebilirim ?

Öncelikle yazmış olduğum Accounts.py ;

import sqlite3 as sqlite

import Generator

import os

import json

import datetime

# Account Management

class Account:

    # Props

    def __init__(self, user_id, firstName, lastName,

                 email, username, password,

                 accountKEY, register_date):

        

        #, Get & Set?

        self.user_id = user_id

        self.firstName = firstName

        self.lastName = lastName

        self.email = email

        self.username = username

        self.password = password

        self.accountKEY = accountKEY

        self.register_date = register_date

    

class UserRepository:

    def __init__(self):

            self.users = []

            self.IsLoggedIn = False # Varsayılan olarak login olmamış.

            self.currentUser = {}

            self.loadUsers()

            

    def loadUsers(self):

        try:

            if os.path.exists('AccInformation.json'): # True ise......

                with open('AccInformation.json', 'r', encoding='utf-8') as file:

                    users = json.load(file)

                    for user in users:

                        user = json.loads(user)

                        newUser = Account(

                            user_id = user['user_id'],

                            firstName = user['firstName'],

                            lastName = user['lastName'],

                            email = user['email'],

                            username = user['username'],

                            password = user['password'],

                            accountKEY = user['accountKEY'],

                            register_date = user['register_date'])

                        self.users.append(newUser)

                        #print(self.users)

            else:

                print("""'AccInformation' adlı Dosya bulunamadı.""")

                

        except json.decoder.JSONDecodeError:

            print("Dosya içeriğinin dolu olduğundan emin olun.")

            

    #  Dışarıdan gelen user bilgisinin tipinin ise Account olmasını istiyoruz

    def AccountRegister(self, user: Account):

        self.users.append(user)

        self.saveToFile()

        #print(f"""'{user.user_id}' kimlikli kullanıcı başarıyla oluşturuldu.""")

            

    def login(self, username, password):

        for user in self.users:

            if user.username == username and user.password == password:

                self.IsLoggedIn = True

                self.currentUser = user

    

    def saveToFile(self):

        list = []

        

        for user in self.users:

            list.append(json.dumps(user.__dict__))

            

        with open('AccInformation.json', 'w', encoding='utf-8') as file: # listeyi gönderiyoruz ve dosya içerisine kaydediyoruz.

            json.dump(list, file, indent=4)

            

    # Create account      

    def CreateAccount(user_id, firstName, lastName, username, password, email, account_key=0, date_time=0):

        repository = UserRepository()

        igenerator = Generator.Production() # #For license and id...

        

        #Auto construction

        user_id = igenerator.id_generator()

        account_key = igenerator.license_generator()

        ock = datetime.datetime.now()

        date_time = datetime.datetime.ctime(ock)

        

        # Account Attribute

        account = Account(user_id = user_id, firstName = firstName,

                          lastName = lastName, username = username,

                          password = password, email = email,

                          accountKEY = account_key, register_date = date_time)

        

        repository.AccountRegister(account)

        

        # Database

        db = sqlite.connect("zyro.db")

        im = db.cursor()

        im.execute("""CREATE TABLE IF NOT EXISTS 

                    account_manager(user_id, firstname, lastname,

                    username, password, email, acc_key, reg_date)""")

        

        # Liste halinde tek seferde gönderiyoruz.

        transferToDB = [user_id, firstName, lastName, username,

                        password, email, account_key, date_time]

        im.execute("""INSERT INTO account_manager VALUES

                    (?, ?, ?, ?, ?, ?, ?, ?)""", transferToDB)

        db.commit()

        print("Veritabanı işleme başarıyla gerçekleşti.")

        

test = UserRepository()

test.CreateAccount("Ali", "Veli", "kirkdokuz", "123456789", "elli@gmail.com")

AccInformation.json adlı json içerikleri :

[

    "{\"user_id\": 43144988050, \"firstName\": \"Sema\", \"lastName\": \"UZUN\", \"email\": \"sema12@gmail.com\", \"username\": \"semazen\", \"password\": \"123456789\", \"accountKEY\": \"QS3V-UPH1-NLJI-ZX28-0A96-YEDG\", \"register_date\": \"Tue Aug 31 14:21:03 2021\"}",

    "{\"user_id\": 48523849070, \"firstName\": \"Falanca\", \"lastName\": \"Filanca\", \"email\": \"ffff@gmail.com\", \"username\": \"falanfilan\", \"password\": \"123456789\", \"accountKEY\": \"MBO3-IW4L-EV0H-G1YS-8T5A-DPRJ\", \"register_date\": \"Tue Aug 31 14:21:30 2021\"}",

    "{\"user_id\": 98477414892, \"firstName\": \"Ali\", \"lastName\": \"Veli\", \"email\": \"elli@gmail.com\", \"username\": \"kirkdokuz\", \"password\": \"123456789\", \"accountKEY\": \"KQV2-X0RA-GBLT-H8F6-953D-WP7Y\", \"register_date\": \"Tue Aug 31 14:22:13 2021\"}"

]

Nerede? (Benim dedigimi mi diyosun yoksa? :​)

Sorun o " degil, satirin basindaki. Icerigi string yapiyor.

Sebebi de surada:

Listeye { 'user_id': 42, 'firstName': "aib", ... } gibi bir dict eklemektense bunun JSON string halini ekliyorsun. Sonra listeyi JSON’a cevirince elemanlari da string oluyor.

1 Beğeni
        for user in self.users:
            list.append(user.__dict__)
            
        with open('AccInformation.json', 'w', encoding='utf-8') as file: # listeyi gönderiyoruz ve dosya içerisine kaydediyoruz.
            json.dump(list, file, indent=1)

Evet hocam kafayı yedirdi bana :slight_smile: Şuan tamam yukarıdaki gibi düzenledim sorunsuz, çok teşekkür ederim :slight_smile:

1 Beğeni