2012-10-24 33 views
0

我有一個json字符串,我用json_encode生成這個問題。 這是輸入:json_encode給出沒有有效的json字符串

stdClass Object 
(
[titles] => stdClass Object 
    (
     [nl] => test 
     [en] => test 
    ) 

[contents] => stdClass Object 
    (
     [nl] => <p>\n test</p>\n 
     [en] => <p>\n test</p>\n 
    ) 

[languages] => stdClass Object 
    (
     [0] => nl 
     [1] => en 
    ) 

) 

,我用這個SQL語句把這個在我的數據庫:

INSERT INTO `pages` 
        (`title`, `content`, `lang`) 
        VALUES('{"nl":"test","en":"test"}', '{"nl":"<p>\\n\ttest<\/p>\\n","en":"<p>\\n\ttest<\/p>\\n"}', '{"0":"nl","1":"en"}') 

據我所看到的,沒有錯,這一切都存儲在數據庫中,沒有問題。

然後我試圖讓輸出我得到這個爲我的內容:導致

{"nl":"<p>n test</p>n","en":"<p>n test</p>n"} 

(
[id] => 10 
[title] => stdClass Object 
    (
     [nl] => test 
     [en] => test 
    ) 

[content] => 
[lang] => stdClass Object 
    (
     [0] => nl 
     [1] => en 
    ) 

[created] => 2012-10-24 11:49:52 
) 

所以,我的JSON字符串無效。 這怎麼可能? 我真的不知道我做錯了什麼。

+1

你說你得到的內容的輸出不是你的INSERT語句存儲在數據庫中的值,但即使這是一個有效的JSON,它也能很好地解碼。在選擇它之後,你會以某種方式改變它,發佈你的實際代碼。另外,你應該規範你的數據庫模式並停止存儲JSON。 – lanzz

回答

0

啊!你是對的!愚蠢的我不這麼想,我總是使用一個函數爲我的SELECT聲明,在此代碼中我使用stripslashes()顯然是使我的JSON字符串無效,因爲其中有一些\n事情。 謝謝!

相關問題