NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

.. meta::
:description: Bu bölümde json sınıfının fonksiyonları anlatılıyor.
:keywords: Json
.. highlight:: py3

****
Json
****

Json farklı diller arasında iletişimi sağlamak için geliştirilmiş
basit bir veri formatıdır. Bu veri formatı pythondaki sözlük ve
listelere çok benzer. İki tür kullanımı vardır. Birincisi anahtar
değer mantıyla çalışır.
::

{
"Ad": "Fırat",
"Soyad": "Özgül"
}

Json ifadelerinde her element arasında virgül olmalıdır. Anahtar ve değer ikilisi
arasında ise iki nokta kullanılır.

İkinci kullanımı ise liste tipine çok benzer. Bu kullanımda
anahtar değer ilişkisinden çok sadece değer alır.

{
"Fırat",
"Özgül"
}

Json modülünde 4 ana fonksiyon bulunuyor. Bunlardan ikisi
python ile json oluşturmaya yararken diğer ikisi json
verilerini çözmeye çözmeye yarar. Json oluşturan fonksiyonlar şu
ikisi:

#.json.dump
#.json.dumps

Json verilerini çözen iki fonksiyon ise şunlar:

#.json.load
#.json.loads

json.dump ve json.dumps
************************

Bu iki fonksiyonu birlikte yazmak istedim. Çünkü ikisinin
parametreleri neredeyse aynı. Aralarındaki fark ise şu:

`dump` fonksiyonu çıktıyı illaki bir dosya içine aktarır.
Yani size al bu senin istediğin json çıktısı demez. Bunu diyen
`dumps` fonksiyonudur. `dumps` fonksiyonu `str` tipinde
bir değer döndürürken `dump` fonksiyonu hiçbir değer döndürmez.

O yüzden python.org sitesinden alınan şu örneklerde `dump`
yerine `dumps` fonksiyonu kullanılmış.Eğer `dump` fonksiyonunu
kullancaksanız jsona dönüşmesini istediğiniz ifadeden sonra
dosyayı bulunduran değişkeni yazın.
::

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps(""foobar"))
""foobar"
>>> print(json.dumps('u1234'))
"u1234"
>>> print(json.dumps('\'))
"\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'

Bu fonksiyonların birkaç parametresi var. Şimdi sıra bunların
ne işe yaradığını öğrenmekte.

**skipkeys**

Normalde python json oluştururken anahtar veya değer basit tipte
(str,int,float...) değilse `TypeError` hatası verir.
Eğer bu parametre `True` (Varsayılan `False` ) ise hata vermek yerine o ikiliyi atlar.

**ensure_ascii**

Eğer bu parametre `True` (varsayılan olarak) ise çıktıda ascii
tablosuna uymayan karakterlerden kaçınır. `False` ise buna dikkat etmez.

::

>>> import json
>>> json.dumps(["üzüm"],ensure_ascii=True)
'["\u00fcz\u00fcm"]'
>>> json.dumps(["üzüm"],ensure_ascii=False)
'["üzüm"]'

**indent**

Eğer negatif olmayan bir tamsayı veya bir string ise
girintileme sayesinde daha güzel bir çıktı almanızı sağlar.
Eğer 0, negatif sayı veya boş string(`""`) ise her elementi yeni
satıra basar.None(Varsayılan) ise dip dibe bir çıktı verir.
Pozitif bir sayı verildiğinde onu boşluk sayısı kabul ederek
girintileme yapar. String ifadesine şu ikisi yeterince açık
bir örnek:`t`,`n`

.. Note::String kullanımı 3.2 sürümü itibari ile başladı.

::

>>> print(json.dumps({"Özellikler":{"Hız":150,"Ses":"10db"}},indent=None))
{"u00d6zellikler": {"Hu0131z": 150, "Ses": "10db"}}
>>> print(json.dumps({"Ozellikler":{"Hız":150,"Ses":"10db"}},indent=4))
{
"Ozellikler": {
"Hiz": 150,
"Ses": "10db"
}
}
>>> print(json.dumps({"Ozellikler":{"Hız":150,"Ses":"10db"}},indent="n"))
{

"Ozellikler": {


"Hiz": 150,


"Ses": "10db"

}
}
>>> print(json.dumps({"Ozellikler":{"Hız":150,"Ses":"10db"}},indent=0))
{
"Ozellikler": {
"Hiz": 150,
"Ses": "10db"
}
}

**separators**

Bu parametre verilen değeri elementler arasında ayraç olarak
kullanır. Verilen değer tuple tipinte olmalıdır. Varsayılan olarak
şu kullanılır:`(",",": ")`
::

>>> json.dumps({"Elma":42,"Armut":25,"kiraz":65},separators=("?","!"))
'{"Elma"!42?"Armut"!25?"kiraz"!65}'

json.load ve json.loads
***********************
Bu iki fonksiyon da dump ve dumps gibi çok benziyor.
Hatta farkları bile neredeyse aynı. load fonksiyonu sadece
dosyadaki json verilerini python verisine çevirirken
loads fonksiyonu veriyi parametre olarak alıyor. dump
ve dumps'da olduğu gibi parametreleri tamamen aynı.

Buraya birkaç örnek kod yazalım.
::

>>> json.loads('{"mezuniyet": "üniversite", "Bölüm": "Tıp"}')
{'mezuniyet': 'üniversite', 'Bölüm': 'Tıp'}
>>> json.loads('["\u00fcz\u00fcm"]')
['üzüm']

Şimdi de sıra fonksiyonların aldığı parametrelerinde.

**object_hook**
Döndürülen değerin veri tipini değitirmenizi sağlar. Bunu
bir kod ile açıklayalım.
::

>>> json.loads('{"mezuniyet": "üniversite", "Bölüm": "Tıp"}',object_hook=list)
['mezuniyet', 'Bölüm']
Gördüğünüz gibi çıktıyı liste tipinde verdi. Ancak bunu
yapmak için sadece anahtarları aldı.

**object_pairs_hook**
object_pairs_hook, object_hook ile benzer görevler yapıyor.
İkisi arasında öncelik object_pairs_hookta. Eğer anahtar değer
ilişkisinden oluşan bir json verisiyse object_pairs_hook
değilse object_hook parametresi kullanılır.
::

>>> json.loads('{"Ad": "Fırat", "Soyad": "Özgül"}',object_pairs_hook=str)
"[('Ad', 'Fırat'), ('Soyad', 'Özgül')]"
>>> json.loads('["Fırat", "Özgül"]',object_pairs_hook=dict,object_hook=list)
['Fırat', 'Özgül']

**parse_int**
int tipindeki değerlerin python koduna dönüştürülürken hangi
tipin kullanılması gerektiğini belirler. Bunu bir kodla
açıklamak daha kolay olur sanıyorum::

>>> json.loads('{"Satılan": 54, "Kalan": 46}',parse_int=float)
{'Satılan': 54.0, 'Kalan': 46.0}

**parse_float**
parse_int parametresinin yaptığını float tipindeki sayılar
için yapar.
::

>>> json.loads('[23, 45.2, "yazbel", 512.128]',parse_int=bool,parse_float=list)
[True, ['4', '5', '.', '2'], 'yazbel', ['5', '1', '2', '.', '1', '2', '8']]
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.