2017-06-21 69 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