2014-04-15 15 views
9

ile sonuçlanır. Bir kayıt kümesinin satırlarını JSON'a dönüştürmek istiyorum, ancak JavaScript’de tanımlanamayan son girişleri de içermiyorum.row_to_json() 'dan null'lar hariç tutulduğunda, PostgreSQL

{"id":"1","prop1":"42","prop2":"Answer"} 
{"id":"2","prop1":null,"prop2":"No prop one"} 
{"id":"3","prop1":"0","prop2":null} 

Ama bunun yerine, ben istediğini: Mesela ben

SELECT row_to_json(testdata) FROM testdata 

Ne olsun yürütmek girdileri

sonra
id | prop1 (integer) | prop2 (text) 
------------------------------------- 
1 |    42 | 'Answer' 
2 |    NULL | 'No prop one' 
3 |    0 | NULL 

ile tablo testdata olduğunu varsayalım :

{"id":"1","prop1":"42","prop2":"Answer"} 
{"id":"2","prop2":"No prop one"} 
{"id":"3","prop1":"0"} 

Bu mümkün mü? PostgreSQL 9.3 için JSON functions documentation'a göre, row_to_json için sadece bir ek seçenek veya parametre var, ancak pretty_bool=true ayarı boş değerlerini kaldırmıyor, bu yüzden cevap hayır gibi görünüyor. Ama bu aynı zamanda çok açık ve kullanışlı bir işlev gibi gözüküyor, bu yüzden başka birinin kaçırdığım bir şey bulduğunu umuyorum.

Son hedefim, bir PHP sayfasına bir GET çağrısı ile JavaScript'teki kayıtları almaktır. PostgreSQL'in JSON rutinlerini kullanmak yerine PHP'deki JSON'u daha standart bir kayıt kümesinden daha iyi yapıyorum?

+1

_but henüz JavaScript'te tanımlanmamış olan son girişleri içermez zaten_değer tanımsız değildir. Bunu yapmak istediğiniz gibi nesneden kaldırırsanız tanımsız olacaktır. –

+0

Onları tanımlanmamasını istedim, bu yüzden onlar benim özel JavaScript uygulamasında tanımlanamayacaklar - bu sadece PostgreSQL'ten PHP'ye JS'den JS'ye zincirinin neresi olduğunu anladığım bir sorudur. Tabii ki, bu benim soruyu hiçbir şekilde etkilemez ... – Michael

+0

Özellik null yerine undefined sahip bir kazanç olduğundan emin misiniz? Ben noktayı göremiyorum. JS uzmanlarına sorun. –

cevap

4

olabilir fonksiyonunun gelecek sürümleri gibi görünüyor bir seçenek 'Boşlara görmezden' - https://commitfest.postgresql.org/action/patch_view?id=1496

+1

Ne yazık ki [bu yama çekildi] (https://github.com/postgres/postgres/commit/c8a026e4f15e2063cd7fe6cb9ffe44f2a81398bd) koddan - [bu tartışmaya bakın] (http://postgresql.nabble.com/json-b-and -null-alanları-td5820666.html). Umarım bir alternatif Postgres 9.5 için zamanında yapacaktır, ancak şu anda Postgres kodunda hiçbir şey göremiyorum. –

+2

Postgresql 9.5 (şu anda geliştirme aşamasında) [json_strip_nulls] (http://www.postgresql.org/docs/devel/static/functions-json.html) işlevine sahiptir. –