Anasayfa / Açık Kaynak / Postgresql ile Sorgu Sonuçlarını JSON formatına Dönüştürme

Postgresql ile Sorgu Sonuçlarını JSON formatına Dönüştürme

Merhaba,

Şimdiki yazımda Postgresql 9.2 ile gelen json desteğinden bahsedeceğim. Herhangi bir sorgu sonucu direk json olarak alabilmemiz postgresql veritabanında mümkün.

Basit bir kaç örnek ile konuyu açıklamaya çalışalım. Sorgu sonucunu json formatına dönüştürmek için kullanacağım ile fonksiyon row_to_json dır. Fonksiyon bize tek satır halinde bir json çıktı üretir.

select row_to_json(words) from words;
{"id":6013,"text":"advancement","pronunciation":"advancement",...}

Sadece istediğimiz kolonları json formatında almak istersek :

select row_to_json(row(id,text)) from words;
{"f1":6013,"f2":"advancement"}

Alt sorgu sonucunu json formatına çevirmek istersek :

select row_to_json(t)
from (
  select id, text from words
) t
{"id":6013,"text":"advancement"}

Bir başka sık kullanılan fonksiyon ise array_agg and array_to_json dır. array_to_json yardımıyla tüm tablo tek bir satır olarak alınabilir.

select array_to_json(array_agg(row_to_json(t)))
   from (
     select id, text from words
   ) t
[{"id":6001,"text":"abaissed"},{"id":6002,"text":"abbatial"},{"id":6003,"text":"abelia"},...]

İçiçe daha karmaşık json formatlar için aşağıdaki şekilde kullanılabilir.

select row_to_json(t)
from (
  select text, pronunciation,
    (
      select array_to_json(array_agg(row_to_json(d)))
      from (
        select part_of_speech, body
        from definitions
        where word_id=words.id
        order by position asc
      ) d
    ) as definitions
  from words
  where text = 'autumn'
)t
{
  "text": "autumn",
  "pronunciation": "autumn",
  "definitions": [
    {
        "part_of_speech": "noun",
        "body": "skilder wearifully uninfolded..."
    },
    {
        "part_of_speech": "verb",
        "body": "intrafissural fernbird kittly..."
    },
    {
        "part_of_speech": "adverb",
        "body": "infrugal lansquenet impolarizable..."
    }
  ]
}

Hakkında Murat KIRMIZIGÜL

- Gaziantep doğumlu - Bilgisayar Mühendisi - Yazılım Geliştirici-Proje Yöneticisi - Siyaset, Tarih, Sosyoloji, Fotoğrafçılık sever - Ayaz'ın babası :)

2 yorum

  1. Merhaba hocam,
    Bu örnekleri kendi database imde kendi tablolarımla deniyorum. Hata veriyor. Postgresql 9.6 kullanıyorum
    Nedeni ne olabilir acaba?

Cevapla

E-posta adresiniz yayınlanmayacak.Gerekli alanlar işaretlenmişlerdir *

*

Yukarı çık