json_encode tuşları teklif kaldırmak?

4 Cevap php

: Böyle bir dizide json_encode () kullanıyorsanız

return json_encode(array( 'foo' => 'bar'));

Dönüş:

{'foo' : 'bar'}

Anahtar bir literal olarak geçirilir ve bu benim komut dosyasını açma edilir. Ne gerçekten ihtiyacınız olduğunu:

{ foo : 'bar' }

Bunu json_encode veya bazı çirkin regex kendimi dışarı tırnak şerit var mı?

4 Cevap

Ben bu kod kısmını test zaman:

echo json_encode(array( 'foo' => 'bar'));
die;

Alıyorum:

{"foo":"bar"}

Hangi geçerli JSON.

(Note these are double-quotes, and not simple-quotes as you posted)


The ouput you are asking for :

{ foo : 'bar' }

geçerli Javascript, ama is not valid JSON - yani json_encode o dönmeyecek.

A subset JavaScript ve değildir JavaScript kendisi - json.org JSON formatının özellikleri için bkz.


Instead of "stripping the quotes out myself with some ugly regex", you should adapt your code, so it accepts valid JSON : this is way better, in my opinion.

Hayır, json_encode sizin için yapmayacağım. json specification specifcally tuşları dizeleri alıntı gerektirir. Bu javascript ayrılmış kelimelerdir tuşları veri nesnesi kırmayacak emin olmak için yapılır.

Bu sizin komut nasıl kadar açma nedir?

Ve başına JSON specification, kilit isimler supposed dizeleri olmak. Deftere 2 pasajı geçerli JSON değildir.

Teşekkürler, herkes. Ben JSON Spec hakkında olduğunu bilmiyordum. Benim Doları veri türü ayarlı değil çünkü konu benim komut dosyası ile aslında oldu. Ajax () fonksiyonu "json" için

Ben bugün öğrendim - JSON ve Javascript aynı şey değildir!