2015-10-22 13 views
5

Bir PostgresQL veritabanına bağlanan Yii2 modelini kullanıyorum. Bu modelin belirli niteliklerini kodlayan ve kod çözen bir davranışım var. Kodlamak/kod çözmek için Json yardımcı, Json::encode ve Json::decode yöntemlerini kullanıyorum.Encoded json PostgresQL tarafından bozuk/escaped?

Tablodaki sütun bir json tipindedir. veritabanında biter ne bir örnek:

'{"additional_tags":["#здрасте","#кафе"],"vk":"vk.com\/privetik"}' 

EDIT:

"{\"additional_tags\":[\"#здрасте\",\"#кафе\"],\"vk\":\"vk.com\\\/privetik\"}" 

Bir php diziye geri çözmesi denemek burada yerine döndü buydu Gel düşünmek, dize iyi görünüyor, ancak ::decode yönteminin davranışı garip. Esas olarak, tek yaptığı, bir php dizisine dönüştürmek veya bir istisna atmak yerine, kaçış eğik çizgi kaldırmaktır.

Bunu düzeltmek için ne yapmalıyım? Herhangi bir geri bildirim için teşekkür ederiz.

+5

Bana uygun görünüyor. Ne * bekliyorsun * iade edilecek? –

+0

Bir php dizisi veya bir istisna. Aslında, şimdi bir jsonlint'e yapıştırdığımda, iyi görünüyor. Ama yine de, bir dizi yerine bir dize vermek için 'decode' yöntemi için çok garip bir davranış (evet, bu ikinci parametreyi geçiyorum). – nainy

+1

Lütfen, neyi ne zaman ve neyi nasıl çıkış yaptığınızı nasıl çözdüğünüzün neyi çözdüğünüz hakkında daha ayrıntılı bilgi edinin. Tam olarak ne yaptığınızı ve ne zaman kaçtığınızı tamamen açık değil. Kaçmanın bazılarının sadece hata ayıklama için olup olmadığını net değil. – deceze

cevap

1

Veritabanınızdaki dizinin iki kez kodlanmış gibi görünüyor. Bir dahaki sefere Json::decode'u geçmeyi deneyin, bahse girerim dizinizi döndürür.

+0

Evet, aslında durum buydu. Olan şey, kodun iki kez yapılmasına neden olduğudur, çünkü ActiveRecord olaylarının hemen hemen hepsinde yapılmasını istedim, ancak gerçekte bunlardan sadece birkaçıya ihtiyacım vardı. – nainy