2014-10-27 3 views
-1

Я получаю JSON строку:json_decode возвращение "NULL" поможет мне

$response = '{"retcode":"0","retmsg":"OK","cre_id_enc":"","cre_type":"","fee_type":"1","listid":"1221085301201410240000001024","out_trade_no":"201410246763831","partner":"1221085301","pay_fee":"0","sign":"PTamau\x2BjkynA00cASKJ6Nd3QwFSBP44TKSqmmdCd\x2F\x2B0o8ViSt3fp5vQr0Fc73U42NhtImfnHzbynoUjURiNLW5O4hI61xkG\x2F97JRPRE0nHuvtAumqXfbVCsLveugE52HRZsJvm3EG7pL6GlhYf8ng6qxiUrDyn89PFVZ04Wd8Gk\x3D","total_fee":"1000000","unfreeze_fee":"1000000","user_name_enc":""}'; 

Я использую json_decode, чтобы преобразовать эту строку в массив, но возвращает "NULL". Я нашел "sign":"PTamau\x2BjkynA00cASKJ6Nd3QwFSBP44TKSqmmdCd\x2F\x2B0o8ViSt3fp5vQr0Fc73U42NhtImfnHzbynoUjURiNLW5O4hI61xkG\x2F97JRPRE0nHuvtAumqXfbVCsLveugE52HRZsJvm3EG7pL6GlhYf8ng6qxiUrDyn89PFVZ04Wd8Gk\x3D","total_fee":"1000000" не могу использовать json_decode. содержит код ASCII типа '\ x2F', '\ x2B', '\ x3D'. , поэтому я пытаюсь преобразовать в utf8, вот так $response = iconv('ASCII', 'UTF-8//IGNORE', $response);. это не полезно. Ответная строка по-прежнему содержит '\x2F' , '\x2B', '\x3D' и json_decode все еще возвращает NULL.

Кто-то может мне помочь и прости меня, мой бедный англичанин! Спасибо!

ответ

1

Согласно ответу на самом similar question, вам нужно, чтобы избежать обратной косой черты:

$json = str_replace('\x', '\\\\x', $response); 

, а затем передать $ в json_decode JSON

+0

спасибо! Я нашел '$ json = str_replace ('\ x', '\\\\ x', $ response);' right – GiGi

0

Вопрос заключается в одиночные кавычки.

print_r('\x2F'); 
\x2F 
print_r("\x2F"); 
/

Одинарные кавычки не будет интерпретировать последовательность обратной косой, которая оставляет вас с искаженной JSON, который позволяет только \\ и \", AFAIK. Если у вас уже есть строка с одним обратным слэшем, сделайте то, что говорит Василис.

Смежные вопросы