2017-09-19 67 views
0

返回null我有以下代碼:PHP json_decode上有效的字符串

轉儲顯示:

string(118) "{'product_option_id':276, 'product_option_value_id':132, 'name':'Цветове', 'value':'Бял', 'type':'select'}" 

,第二個(json_decode):

NULL 

爲什麼該字符串不能被解析?

編輯: 現在我的JSON看起來是這樣的:

string(205) "{"product_option_id": 280, "product_option_value_id": 133, "name": "Цветове", "value": "Бежов", "type": "select"}" 

而且我將此添加到我的代碼:

switch (json_last_error()) { 
     case JSON_ERROR_NONE: 
      echo ' - No errors'; 
     break; 
     case JSON_ERROR_DEPTH: 
      echo ' - Maximum stack depth exceeded'; 
     break; 
     case JSON_ERROR_STATE_MISMATCH: 
      echo ' - Underflow or the modes mismatch'; 
     break; 
     case JSON_ERROR_CTRL_CHAR: 
      echo ' - Unexpected control character found'; 
     break; 
     case JSON_ERROR_SYNTAX: 
      echo ' - Syntax error, malformed JSON'; 
     break; 
     case JSON_ERROR_UTF8: 
      echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; 
     break; 
     default: 
      echo ' - Unknown error'; 
     break; 
    } 

和我返回語法錯誤,畸形的JSON

+1

[在JSON單VS雙引號]的可能的複製(https://stackoverflow.com/questions/4162642/single-vs-double-quotes-in-json) – Calimero

+0

問題:你使用什麼字符編碼方案?如果UTF-8以外的任何東西可能是您的問題。 – Simba

回答

1

看到這個回答:https://stackoverflow.com/a/4162651/174326

如果你換你的字符串在你的JSON字符串用雙引號它會工作: json_decode('{"product_option_id":276, "product_option_value_id":132, "name":"Цветове", "value":"Бял", "type":"select"}')

+0

我做了它,結果仍然是相同的 我的第一個轉儲現在看起來像這樣:'string(196)「{」product_option_id「:276,」product_option_value_id「:132,」name「:」Цветове「,」value 「:」Бял「,」type「:」select「}」' – TheAngelM97

1

單引號沒有在JSON不允許的,只有雙引號。做

$option = str_replace ("'", '"', $option); 

之前致電json_decode

+0

現在它看起來像這樣:'string(196)「{」product_option_id「:276,」product_option_value_id「:132,」name「:」Цветове「, 「value」:「Бял」,「type」:「select」}「',但結果仍爲空 – TheAngelM97

+0

並且錯誤仍然相同? – Simba