2015-07-07 3 views
-2

Он отлично работал в один прекрасный день, когда я вижу, что нижний декодер json не работает.Json decode string не работает на php

<?php 

$data = $_POST["data"]; 

$jsonString= urldecode(stripslashes($data)); 

$input = json_decode($jsonString, true); 

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 

fwrite($fh, $input); 


fclose($fh) 

Я проверил значение $ data и $ jsonString, у него есть строка vaild json. Но строка $ input пуста. Любое предложение ...?

+1

Если строка JSON верна, то вы получите ассоциативный массив обратно, но 'FWRITE()' только принимает строка. Поэтому вы должны получить сообщение об ошибке, если у вас включен отчет об ошибках: ' ' – Rizier123

+0

кажется' $ jsonString' не содержит действительных json –

+0

Есть ли у вас флажок с json_last_error_msg? – Jagadeesh

ответ

0

пожалуйста, свяжитесь с и получить номер ошибки и отправить его

echo json_encode($jsonString, true); 
echo json_last_error_msg(); 

function json_last_error_msg() { 
static $errors = array(
    JSON_ERROR_NONE    => null, 
    JSON_ERROR_DEPTH   => 'Maximum stack depth exceeded', 
    JSON_ERROR_STATE_MISMATCH => 'Underflow or the modes mismatch', 
    JSON_ERROR_CTRL_CHAR  => 'Unexpected control character found', 
    JSON_ERROR_SYNTAX   => 'Syntax error, malformed JSON', 
    JSON_ERROR_UTF8    => 'Malformed UTF-8 characters, possibly incorrectly encoded' 
); 
$error = json_last_error(); 
return array_key_exists($error, $errors) ? $errors[$error] : "Unknown error ({$error})"; 

}