Python'da JSON Nasıl Ayrıştırılır - Kolay Adımlar

Yorumlar: 0

JSON, JavaScript Nesne Notasyonu anlamına gelir. Sadece hafif olmakla kalmaz, aynı zamanda insanlar için okunması ve yazılması da kolaydır. Aynı şekilde makineler için de ayrıştırılması ve üretilmesi kolaydır. Herhangi bir Python geliştiricisi için API'lerden, yapılandırma dosyalarından veya diğer depolanmış bilgi kaynaklarından gelen içerikle uğraşırken ayrıştırma çok önemlidir. Bu makale, içeriği kaydetmek için json.dump python'un nasıl kullanılacağı da dahil olmak üzere Python modülünü kullanarak JSON'u ayrıştırmanın temelleri hakkında size yol gösterir.

JSON'u ve yapısını anlama

JSON, ayrıntıları anahtar-değer çiftleri halinde yapılandırır. İşte temel bir nesne örneği:


{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"]
}

Bu python json ayrıştırma örneği ortak: bir string, sayı, boolean ve bir dizi içerir. Bu yapıya aşina olmak Python'da çalışmayı çok daha kolay hale getirir.

Python'da JSON ile Etkileşim

Python'daki yerleşik modülü kullanarak python parse json dizesini kolayca uygulayarak. Bu modül, bir dizeden okumak için json.loads() ve bir dosyadan okumak için json.load() gibi yöntemler içerir. Tersine, json.dumps() ve json.dump Python, sırasıyla bir dizeye ve bir dosyaya bilgi yazmak için kullanılır.

JSON verilerini okuma

Daha sonra ele alacağımız JSON verilerinin nasıl okunacağına bakalım.

Bir dizeden JSON okuma

Python'da json okumak istiyorsanız, bir dizeyi ayrıştırmak ve bir Python nesnesine dönüştürmek için json.loads() kullanın:


import json

json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)

print(data)

Çıktı:

1.png

Bir Dosyadan JSON Çıkarma

Bir dosyadan bilgi almak için şu yöntemi kullanın: json.load() ve python'da bir json dosyası açın:


import json

with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

Çıktı:

2.png

JSON verilerini yazma

Yazmadan önce, genellikle mevcut bilgileri okumanız veya yüklemeniz gerekir - ve işte bu noktada python load json file yöntemi kullanışlı hale gelir. Bilgi düzgün bir şekilde yüklendikten sonra, onu çeşitli biçimlerde değiştirebilir ve geri yazabilirsiniz.

JSON'u bir dizeye yazma

Bilgileri bir dizeye yazmak için json.dumps Python yöntemini kullanın:


import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

json_string = json.dumps(data)
print(json_string)

Çıktı:

3.png

JSON'u bir dosyaya yazma

Bu dosyanın ayrıntılarını yazmak için json.dump Python yöntemini kullanın:


import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

with open('data.json', 'w') as file:
    json.dump(data, file)

Gelişmiş İç İçe JSON Yönetme

Daha karmaşık bilgi yapılarıyla çalışırken iç içe geçmiş nesneler yaygındır ve bu iç içe geçmiş yapıları kolayca işleyebilir.


import json

nested_json_string = '''
{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"],
    "address": {
        "street": "123 Main St",
        "city": "Wonderland"
    }
}
'''

data = json.loads(nested_json_string)
print(data['address']['city'])

Çıktı:

4.png

Özel JSON kodlayıcı

Dil, tüm özel nesneleri otomatik olarak JSON'a dönüştüremez. Bu gibi durumlarda, özel bir kodlayıcı oluşturmanız gerekir.


import json

class Student:
    def __init__(self, name, age, is_student):
        self.name = name
        self.age = age
        self.is_student = is_student

class StudentEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Student):
            return obj.__dict__
        return super().default(obj)

student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)

Çıktı:

5.png

Özel JSON kod çözücü

Özel nesnelere serileştirme yapmak için, bunları nasıl işleyeceğini bilen özel bir kod çözücü uygulamanız gerekir.


import json

class Student:
    def __init__(self, name, age, is_student):
        self.name = name
        self.age = age
        self.is_student = is_student

def student_decoder(dct):
    return Student(dct['name'], dct['age'], dct['is_student'])

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)

Çıktı:

6.png

Yaygın sorunların ele alınması

Veri ayrıntılarıyla çalışmak, özellikle yapılandırılmış içeriği ayrıştırırken, oluştururken veya bunlara erişirken çeşitli yaygın hatalara yol açabilir. Güvenilir bir python json ayrıştırıcı kullanmak, bu sorunları daha verimli bir şekilde tanımlamaya ve düzeltmeye yardımcı olabilir. İşte en yaygın olanlardan bazıları:

Geçersiz JSON biçimi

Json dosyası ayrıştırılırken sık karşılaşılan bir hata, geçersiz bir formatla karşılaşılmasıdır. Anahtarların ve dize değerlerinin etrafında çift tırnak işareti ve parantez ve ayraçların uygun şekilde yerleştirilmesini gerektirir.


import json

invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
    data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
    print(f"Invalid JSON format: {e}")

Çıktı:

7.png

Kayıp anahtarların işlenmesi

Bazen içerik, beklediğiniz tüm anahtarları içermez. get() yöntemini kullanmak, hata vermek yerine varsayılan bir değer döndürerek eksik anahtarları güvenli bir şekilde ele almanızı sağlar.


import json

json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)

is_student = data.get('is_student', False)
print(is_student)import json

json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)

is_student = data.get('is_student', False)
print(is_student)

JSON ayrıştırma sorunlarında hata ayıklama

Kesme noktaları ayarlamak ve ayrıştırma kodunuzda hata ayıklamak için pdb modülünü kullanın.


import json
import pdb

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)

Web kazımada JSON kullanımına pratik bir örnek

Web kazıma genellikle elde edilen bilgileri döndüren hizmetlerden içerik almayı içerir. Aşağıda, https://httpbin.org/anything uç noktasının yanı sıra istek kütüphanesini kullanan bir örnek yer almaktadır.

Başlamadan önce, requests paketini yüklediğinizi kontrol edin:


pip install requests

Yapılandırılmış içerikle çalışırken, işleri kolaylaştırmak için requests kütüphanesini kullanabilirsiniz. Basitçe requests.get(url) aracılığıyla bir GET isteği ve URL gönderin. Ardından, response.json() ile yanıtı ayrıştırabilirsiniz. Buradan, üstbilgiler, kullanıcı aracısı, kaynak veya istek URL'si gibi belirli bilgi parçalarına erişmek ve gerektiğinde bunları yazdırmak kolaydır.

Kod güçlü hata işleme özelliğine sahiptir; kod çözme hatası oluştuğunda json.JSONDecodeError ve belirli bir anahtar olmadığında KeyError hatalarını yakalayarak programın 'veri yok' çökmelerine karşı korunmasını sağlar. Bu tür bir kod sağlamlığı, bu nedenle gerçek web kazıma görevlerini mükemmel bir şekilde ele almasını sağlar.


import requests
import json

url = 'https://httpbin.org/anything'

response = requests.get(url)

try:
    data = response.json()

    # JSON yanıtından belirli verileri ayıklama
    headers = data['headers']
    user_agent = headers.get('User-Agent', 'N/A')
    origin = data.get('origin', 'N/A')
    url = data.get('url', 'N/A')

    print(f"User Agent: {user_agent}")
    print(f"Origin: {origin}")
    print(f"URL: {url}")

except json.JSONDecodeError:
    print("Error decoding JSON response")

except KeyError as e:
    print(f"Key error: {e} not found in the JSON response")

8.png

Her geliştirici python'da bir json dosyasını nasıl ayrıştıracağını bilmelidir. Bu kılavuzda vurgulanan modül ve bunu yapmanın en iyi yolu ile, yeterince hızlı okuyabilir, yazabilir ve hata ayıklayabilirsiniz. Bu, kodunuzu düzenli olarak test etmek ve daha iyi performans için doğru araçları ve en son özellikleri kullanmak anlamına gelir. Bu kılavuz, bu görevlerde verimli bir şekilde ustalaşmanıza yardımcı olmak için python'da json verilerini ayrıştırmaya odaklanmaktadır.

Web kazıma yaparken, web API'lerinden gelen içerik genellikle bu formatta geldiğinden ayrıştırma çok önemli hale gelir. Bunu işleme ve manipüle etme konusunda yetenekli olmak, çeşitli kaynaklardan değerli bilgileri verimli bir şekilde çıkarmanıza olanak tanır.

Sonuç

Ayrıştırma, web API'leri, yapılandırma dosyaları veya harici kaynaklarla çalışan tüm geliştiriciler için önemli bir beceridir. Bir dizeden, dosyadan okuma, yapılandırılmış çıktı yazma veya iç içe geçmiş ve özel nesnelerle uğraşma gibi bilgilerin işlenmesi, Python'daki yerleşik modül aracılığıyla basitleştirilmiştir. Geliştiriciler json.load(), json.loads(), json.dump(), json.dumps() Python yöntemlerinin kilidini açabilir ve yaygın sorunlarla nasıl başa çıkacaklarını, özel kodlayıcıları veya kod çözücüleri nasıl uygulayacaklarını ve sağlam ve güvenilir bilgi etkileşimleri için özel uygulamalar yapmayı öğrenebilirler. Bu formatın bilgi alışverişi için bir web standardı olduğu göz önüne alındığında, bu beceriler kazıma, içeriği manipüle etme ve API'ler aracılığıyla birden fazla hizmeti entegre etme konusunda değerlidir. Json dosyasını okumak için basit python kodunu kullanmak, python'da bir json dosyasını ayrıştırmayı herhangi bir proje için erişilebilir hale getirirken, json.dump python malzemeyi verimli bir şekilde geri kaydetmeye izin verir.

Yorumlar:

0 yorumlar