簡體   English   中英

json_decode返回1的數組

[英]json_decode returning an array of 1

我正在嘗試將JSON解碼為php數組。 這是代碼摘錄:

$getfile="{"fname":"bob","lname":"thomas","cascade":"bthomas","loc":"res","place":"home 2"}";
$arr = json_decode($getfile, true);
$arr['day3'] = $selecter;
echo(print_r($arr));

返回的唯一內容是“ 1”。 我檢查了JSONLint,它是有效的json,所以我想知道json_decode為何失敗。 我還嘗試在將day3鍵添加到該數組之前檢查該數組是什么,但仍然返回“ 1”。 任何幫助表示贊賞!

實際代碼:

$getfile = "";
    $getfile = file_get_contents($file);
    if ($getfile == "") {
        writeLog("Error reading file.");
    }
    writeLog("getfile is " . $getfile);
    writeLog("Decoding JSON data");
    $arr = json_decode($getfile, true);
    writeLog("Decoded raw: " . print_r($arr));
    writeLog("Editing raw data. Adding data for day " . $day);
    $arr['day3'] = $selecter;
    writeLog(print_r($arr));
    $newfile = json_enconde($arr);
    writeLog($newfile);
    if (file_put_contents($file, $newfile)) {
        writeLog("Wrote file to " . $file);
        echo $newfile;
    } else {
        writeLog("Error writting file");
    }

這些是$ file的內容(它是一個文本文件)

{"fname":"Bob","lname":"Thomas","cascade":"bthomas","loc":"res","place":"home 2"}

我們仍然不知道您文件中的內容。 但是如果:

 "{"fname":"bob","lname":"thomas","cascade":"bthomas","loc":"res","place":"home 2"}" 

然后,多余的外部雙引號將擰緊JSON ,而json_decode將返回NULL。 使用json_last_error()找出json_last_error() 也可能是UTF-8 BOM或其他東西...

無論如何, 1print_r的結果。 print_r直接輸出,不需要回顯。 也用於調試而不是使用var_dump()


更具體地說,您希望返回print_r輸出(而不是布爾成功結果1 ),然后將其寫入日志。

因此使用:

      writeLog(print_r($arr, TRUE));

注意TRUE參數。

首先,使用單引號。 這將導致解析錯誤

$getfile= '{"fname":"bob","lname":"thomas","cascade":"bthomas","loc":"res","place":"home 2"}';

我假設您已經聲明了$ selecter,並且它已經分配了一些值。

echo(print_r($arr))刪除echo不需要echo。 print_r也將輸出。 如果使用echo,它將在數組末尾顯示1。

工作代碼:

$getfile = '{"fname":"bob","lname":"thomas","cascade":"bthomas","loc":"res","place":"home 2"}';
    $arr = json_decode($getfile, true);
    $selecter = 'foobar';
    $arr['day3'] = $selecter;
    print_r($arr);

希望這可以幫助。

這樣做時遇到了這個問題:

if ($arr = json_decode($getfile, true)) {
    $arr['day3'] = $selecter;
    echo(print_r($arr));
}

如果解決方案之外,則將其解碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM