2017-02-19 176 views
0

試圖對象的PHP數組保存到一個JSON文件,但布爾屬性被保存在字符串:PHP json_encode字符串格式保存布爾

[ 
    { 
     "title" : "My Page", 
     "url" : "mypage", 
     "type" : "content", 
     "final" : "false" // supposed to be simply false 
    } 
] 

爲什麼呢? ...有沒有我可以使用的標誌或什麼?目前我正在使用JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK

+3

測試早在PHP 5.4的PHP 7,你的榜樣陣列始終正確編碼。數組中的'final'類型必須是一個字符串。 – Bytewave

+1

向我們展示一個對象的var_dump –

回答

2

我有一種感覺,轉換工作正常,並且該值實際上是一個字符串。您可以通過gettype($var)進行確認。

請注意,URL編碼只給你字符串值。你可以嘗試切換到JSON。

爲了讓PHP來處理應用程序/ JSON,添加此功能,然後調用它的能力:

function convertJsonBody() { 
    $methodsWithDataInBody = array(
      'POST', 
      'PUT', 
    ); 

    if (
      isset($_SERVER['CONTENT_TYPE']) 
      && (strpos(strtolower($_SERVER['CONTENT_TYPE']), 'application/json') !== FALSE) 
      && isset($_SERVER['REQUEST_METHOD']) 
      && in_array($_SERVER['REQUEST_METHOD'], $methodsWithDataInBody) 
    ) { 
      $_POST = json_decode(file_get_contents('php://input'), TRUE); 
      foreach($_POST as $key => $value) { 
       $_REQUEST[$key] = $value; 
      } 
    } 
} 
+0

你是對的,它可能是我將數據傳遞給服務器的方式。我會試着改變這個 – levi

+0

header中的數據是這樣傳遞的:data [1] [final]:true - 接收數據時是否需要在服務器上做進一步的處理? – levi

+0

內容類型當前是:'application/x-www-form-urlencoded' – levi