2017-09-19 34 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