2010-12-13 116 views
0

我將這{background:"default.jpg"}存儲在表中的數據庫字段中的數據和由json_encode makint json編碼此json也得到編碼,它不是有效的JSON所以我應該如何編碼這些json。json編碼在php

{"id_session":"c72b0581e7675b596a7651a7bb906438","gibid":"54","name":"Market Place","type":"S","num_owners":"0","inner_template":"","inner_data":"{background:\"default.jpg\"}","outer_template":"","o 

它添加斜線我應該如何返回有效的json。

謝謝。

+0

echo json_decode('{background:「default.jpg」}',true);爲什麼它不返回數組? – XMen 2010-12-13 07:59:20

回答

2
  1. 不要將JSON存儲在數據庫中,將它存儲爲中性格式,如鍵/值列。或者:
  2. 解碼JSON,將其合併到要編碼的數組中,然後對其進行編碼。

    $data = array('id' => ...); 
    $data['inner_data'] = json_decode($databaseJson, true); 
    json_encode($data); 
    
+0

echo json_decode('{background:「default.jpg」}',true); 爲什麼它不返回數組? – XMen 2010-12-13 07:54:57

+1

因爲'{background:「default.jpg」}'不是有效的JSON。請參閱http://www.jsonlint.com/。有效的表單是'{「background」:「default.jpg」}' – Mchl 2010-12-13 08:01:39

+0

感謝Mchl,爲什麼我們不應該將json存儲在數據庫中,並且@deceze您告訴關鍵和值中性格式它是什麼請解釋? – XMen 2010-12-13 08:14:40

0

所以,你必須在數據庫中的JSON字符串,然後你把它弄出來的,然後重新做一個IR json_ecnode?對於PHP,你只是編碼一些字符串(這就是爲什麼引號中的反斜槓來自)。

但是爲了實現你真正想要的,你可以先解碼來自數據庫的JSON字符串,然後再用其他數據進行編碼。

+0

echo json_decode('{background:「default.jpg」}',true);爲什麼它不返回數組? – XMen 2010-12-13 07:58:10

+0

請參閱Mchl關於欺騙答案的評論。他的評論是正確的。 – enricog 2010-12-13 08:08:35