簡體   English   中英

奇怪的行為json_decode

[英]strange behavior json_decode

我用這種方式在javascript中創建一個json

jsonArr.push({
            position: 'WN',
            wind: windWN,
            wave: waveWN,
            sea:  seaWN
        });
        var myJsonString = JSON.stringify(jsonArr);

我通過帶有jsonData的AJAX方法發送它: jsonData:Ext.encode(myJsonString)

我的json數組在發送時看起來像這樣: 在此處輸入圖片說明

在PHP方面,我得到Json並以這種方式對其進行解碼:

$rawpostdata = file_get_contents("php://input");
$rawpostdata2 = json_decode($rawpostdata, true); 

我嘗試了print_r( $rawpostdata2[1]); 並以“ {”作為“字符串”的第二個字符,我不明白為什么。

另一方面,我嘗試了print_r($rawpostdata) ,將結果剪切/ print_r($rawpostdata)到$ string中,然后像這樣重新測試我的json_decode:

$rawpostdata = file_get_contents("php://input");
// print_r($rawpostdata);
$string = '[{"position":"N","wind":"2","wave":"65","sea":"65"},{"position":"E","wind":"3","wave":"5","sea":"6"},{"position":"S","wind":"56","wave":"4","sea":"8"},{"position":"W","wind":"1","wave":"56","sea":"84"},{"position":"NE","wind":"5","wave":"6","sea":"65"},{"position":"ES","wind":"6","wave":"45","sea":"6"},{"position":"SW","wind":"69","wave":"8","sea":"4"},{"position":"WN","wind":"7","wave":"8","sea":"56"}]';
$rawpostdata2 = json_decode($string,true); 
print_r ($rawpostdata2[1]);

它給我正確的結果!

數組([位置] => E [風] => 3 [波浪] => 5 [海] => 6)

你有一些解釋嗎?

編輯:我通過使另一個json_decode使其工作

$rawpostdata = file_get_contents("php://input");
$rawpostdata2 = json_decode($rawpostdata,true); 
$rawpostdata3 = json_decode($rawpostdata2,true);

但是我真的不明白...

首先,創建json字符串:

var myJsonString = JSON.stringify(jsonArr);

然后,將生成的字符串再次編碼為json:

Ext.encode(myJsonString)

因此,您必須在PHP中兩次json_decode()

嘗試使用$ _POST代替file_get_contets() ,它會給您一個字符串

您需要像這樣對json_decode的結果進行類型轉換:

<?php 
    $rawpostdata = file_get_contents("php://input");
    $rawpostdata2 = (array) json_decode($rawpostdata,true);
?>

我希望這對你有用。

暫無
暫無

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

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