2017-06-21 114 views
0

我想反序列化從PHP序列化數組數據節點JS如何在節點js或javascript中反序列化php數組?

我在很多問題中發現使用JSON.stringify()序列化和反序列化的使用JSON.parse但不能做同樣找不到任何解決方案同樣也

我的連載數據: -

a:1:{i:0;a:4:{s:10:"first_name";s:7:"Vikas";s:11:"last_name";s:6:"Kohli";s:8:"end_date";s:10:"2017-06-12";s:16:"position";s:19:"Software Developer";}} 

如何反序列化這個數組?

我發現使用

  1. http://locutus.io/php/var/unserialize/上懸而未決相同的,但我沒有看到了同樣的任何實現。
  2. https://github.com/naholyr/js-php-unserialize ---(兼容性問題 - 該庫已經過服務器端測試,例如使用[] .reduce,因此它可能無法在某些瀏覽器上運行。你最喜歡的瀏覽器:)這就是爲什麼不使用

此外,當我用第二種方法,那麼它會導致像

{ '0': 
    { first_name: 'Vikas', 
    last_name: '899.99', 
    end_date: '2017-06-12', 
    position: 'Software Developer' 
    } 
} 

現在我會如何獲取數據從,如果我作爲可以有數據如0,1,2等

我希望我能夠理解我的問題。

+2

這裏的用例是什麼?你可以簡單地使用json_encode而不是序列化? – mkaatman

+0

好吧,只是一個簡單的谷歌應該顯示這個** [JavaScript的PHP反序列化](https://github.com/naholyr/js-php-unserialize)**庫。 – YvesLeBorg

+1

請顯示您產生這個的PHP代碼。當然,有更好的方法可以嘗試在JavaScript中對其進行解碼。 – trincot

回答

0

由PHP序列化的數據應該由PHP反序列化,因爲它是適用於該環境的格式。當你有可能在PHP本身做到這一點時,使用JavaScript 反序列化函數是不明智的。

所以做到這一點在PHP中:

// Deserialize your data 
$data11 = unserialize($row['data']); 
// JSON encode it, and output that 
echo json_encode($data11); 
在JavaScript

然後,假設你在一個變量response獲得PHP數據(通過Ajax請求):

var data = JSON.parse(response); 

我想你已經有了執行Ajax請求的代碼。如果沒有,請看看關於該主題的許多Q & A,例如HTTP GET request in JavaScript?

+0

是的,那麼會有變化。所以不可能在沒有任何外部庫的情況下使用JavaScript進行反序列化(提到的問題) –

+0

我並不是說這不可能,但這樣做是不明智的。這種序列化格式適用於PHP,因此在使用JavaScript解決方案時,您經常遇到不完美的事情。爲什麼要使用一種困難的,可能有問題的方法,當你有一個防彈的「反序列化」PHP函數? – trincot