Json_decode garip davranışları ()

2 Cevap php

: - (Ama bu alakasız bazı ExtJS kod tarafından oluşturulan) aşağıdaki JSON dize almak

[{"action":"Setting","method":"toggle","data":["welcome-home"],"type":"rpc","tid":2},{"action":"ContentExtFeFillout","method":"todo","data":[true,0,8,false],"type":"rpc","tid":3}]

Bir POST isteği olarak bir sunucuya gönderilir ve $GLOBALS['HTTP_RAW_POST_DATA'] üzerinden alınır.

Koşu

json_decode($GLOBALS['HTTP_RAW_POST_DATA']);

: geliştirme makinede (5.2.10-2ubuntu6.4 Suhosin Patch ile 0.9.7) doğru bir print_r() çıktı verir

Array
(
    [0] => stdClass Object
        (
            [action] => Setting
            [method] => toggle
            [data] => Array
                (
                    [0] => welcome-home
                )

            [type] => rpc
            [tid] => 2
        )

    [1] => stdClass Object
        (
            [action] => ContentExtFeFillout
            [method] => todo
            [data] => Array
                (
                    [0] => 1
                    [1] => 0
                    [2] => 8
                    [3] =>
                )

            [type] => rpc
            [tid] => 3
        )
)

Koşu the same code on a client's production machine (5.2.5 with Suhosin Patch 0.9.6.2 and Zend Optimizer; SUSE Linux by the way) gives the following print_r() output:

Array
(
    [0] => stdClass Object
        (
            [action] => Setting
            [method] => toggle
            [data] => Array
                (
                    [0] => welcome-home
                )

            [type] => rpc
        )

    [1] => 2
    [2] => stdClass Object
        (
            [action] => ContentExtFeFillout
            [method] => todo
            [data] => Array
                (
                    [0] => 1
                    [1] => 0
                    [2] => 8
                    [3] => 
                )

            [type] => rpc
        )

    [3] => 3
)

Bu doğal olarak tüm aşağıdaki kodu tatili - Açıkçası başına bir değer olarak ana diziye taşındı eksik tid özelliğini unutmayın.

Biz de bir Windows PHP version json_decode() bir hata varsa 5.2.5 kontrol etmek indirilen ama biz burada doğru çıktı almak.

Tüm bu de json_decode() ile ilgili bilinen sorunlar bu garip davranışa neden olabilecek var mı?

Şu anda tamamen clueless ...

Hepinize teşekkürler!

Saygılarımızla

Stefan

2 Cevap

Tamam çocuklar - sorun çözüldü. Biz yüklü PHP sürümünü güncellemek ve ne tahmin müşteri ikna daha fazla seçenek eksik: çalışır.

Güncelleme ile sabit olmuştur onların PHP kurulumu (PHP, Zend Optimizer ve / veya Suhosin) ince bir hata olmuş gibi görünüyor. Yine de, oldukça tuhaf bir şey.

Hepinize teşekkürler!

Saygılarımızla

Stefan

Eğer TID ve tipi tuşları takas denediniz mi? Ayrıca ne sorun $ GLOBALS ['HTTP_RAW_POST_DATA'] ile olabilir eğer kontrol etmek için bir kodlanmış değişken kullanarak?

Aşağıdaki deneyin:

$t1='[{"action":"Setting","method":"toggle","data":["welcome-home"],"type":"rpc","tid":2},{"action":"ContentExtFeFillout","method":"todo","data":[true,0,8,false],"tid":2,"type":"rpc"}]';
print_r(json_decode($t1));