The serialize() method creates a URL encoded text string by serializing form values. You can select one or more form elements (like input and/or text area), or the form element itself. The serialized values can be used in the URL query string when making an AJAX request. JSON API Serializer. A Node.js framework agnostic library for. Calling the serialize method on the returned object will serialize your data (object or array).

Active3 months ago

I have a table with a load of rows of serialized arrays that I plan to request and pass it to JavaScript.

  • NodeJS Module for working with PHP serialized data. In the most basic form, simply pass primitives, objects or arrays into the serialize method.
  • In the application developed using Node.js, we need to decide from where we can read data and serialize it in the JSON and XML format. Prerequisites for the implementation. This application is developed using Visual Studio Code.

The problem is - is it possible to unserialize with JavaScript rather than PHP ?

Otherwise I will have to load all the rows, loop them and unserialize them and assign them to a temporary PHP array and then json_encode it back to JavaScript which seems highly inefficient if I can send the data still serialized so that JavaScript can unserialize the data when it needs to.

Is there a built in Javascript function that does it or will I have to loop the rows in PHP before I encode it?

Note I am not using jQuery.

EDIT:Example of my serialized data in PHP from my table:

Sir
SirSir
4,7939 gold badges59 silver badges122 bronze badges

4 Answers

charlietflcharlietfl
147k13 gold badges98 silver badges129 bronze badges

Php.js has javascript implementations of unserialize and serialize:

That said, it's probably more efficient to convert to JSON on the server side. JSON.parse is going to be a lot faster than PHP.js's unserialize.

snostormsnostorm
1,0282 gold badges15 silver badges27 bronze badges

Just noticed your comment so here we go:

in PHP

in JavaScript:

HMRHMR
15.2k11 gold badges41 silver badges103 bronze badges

I thought I would have a go at writing a JS function that can unserialize PHP-serialized data.

But before going for this solution please be aware that:

  • The format produced by PHP's serialize function is PHP specific and so the best option is to use PHP's unserialize to have 100% guarantee that it is doing the job right.
  • PHP can store class information in those strings and even the output of some custom serialization methods. So to unserialize such strings you would need to know about those classes and methods.
  • PHP data structures do not correspond 1-to-1 to JavaScript data structures: PHP associative arrays can have strings as keys, and so they look more like JavaScript objects than JS arrays, but in PHP the keys keep insertion order, and keys can have a truly numeric data type which is not possible with JS objects. One could say that then we should look at Map objects in JS, but those allow to store 13 and '13' as separate keys, which PHP does not allow. And we're only touching the tip of the iceberg here...
  • PHP serializes protected and private properties of objects, which not only is strange (how private is that?), but are concepts which do not (yet) exist in JS, or at least not in the same way. If one would somehow implement (hard) private properties in JS, then how would some unserialization be able to set such a private property?
  • JSON is an alternative that is not specific to PHP, and does not care about custom classes either. If you can access the PHP source of were the serialization happens, then change this to produce JSON instead. PHP offers json_encode for that, and JavaScript has JSON.parse to decode it. This is certainly the way to go if you can.

If with those remarks you still see the need for a JS unserialise function, then read on.

Here is a JS implementation that provides a PHP object with similar methods as the built-in JSON object: parse and stringify.

When an input to the parse method references a class, then it will first check if you passed a reference to that class in the (optional) second argument. If not, a mock will be created for that class (to avoid undesired side-effects). In either case an instance of that class will be created. If the input string specifies a custom serialization happened then the method unserialize on that object instance will be called. You must provide the logic in that method as the string itself does not give information about how that should be done. It is only known in the PHP code that generated that string.

This implementation also supports cyclic references. When an associative array turns out to be a sequential array, then a JS array will be returned.

trincottrincot
142k18 gold badges111 silver badges150 bronze badges

Not the answer you're looking for? Browse other questions tagged phpjavascriptajax or ask your own question.

Active2 years, 8 months ago

First of all, I could not able to get clear definition of it from WikiPedia or even from serialize function in the PHP manual. I need to know some cases we need the term serialization and how things are going without it? In other word, Where you must need serialization and without it your code will be missing some important feature.

Jean-Rémy Revy
5,0513 gold badges34 silver badges60 bronze badges
user1350140

5 Answers

What serialization is?

Serialization is objects encoding into other language.For example you have an array in PHP like this:

And then you want to store it in file or send to other application.

There are multiple choices of languages, but the idea is the same:That array has to be encoded (or translated) into text or bytes, that can be written to file or sent via network.For example, if you

you will get this:

This is PHP's particular serializing format that PHP understands and it works vice versa so you are able to use it to deserialize objects. For example, you stored an array in file and you want it back in your code:

But you could choose another serialization format, for example, JSON.

will give you this:

Result that is not only easily saved, read by human eye or sent via network, but is understandable to almost every other language (Javascript, Java, C#, C++.....)

ConclusionSerialization is object translation to other language, in case you want to store or share data.

Are there any situations, where you cannot do anything, but serialize it?

No. But serialization usually makes things easier.

Are JSON and PHP format the only possible formats?No, no, no and one more time no. There are plenty of formats.

  • XML which has successors like SOAP, WSDL, etc (those have particular purpose)
  • Bytes
  • ...
  • ...
  • ...
  • Your own formats (you can create your own format for serialization and use it, but that is a big thing to do and is not worth it, most of the time)

Hope I helped!

Dovydas NavickasDovydas Navickas

Serialization is the process of converting some in-memory object to another format that could be used to either store in a file or sent over the network. Deserialization is the inverse process meaning the actual object instance is restored from the given serialized representation of the object. This is very useful when communicating between various systems.

The serialization format could be either interoperable or non-interoperable. Interoperable formats (such as JSON, XML, ...) allow for serializing some object using a given platform and deserializing it using a different platform. For example with JSON you could use javascript to serialize the object and send it over the network to a PHP script that will deserialize the object and use it.

The serialize() PHP function uses an non-interoperable format. This means that only PHP could be used to both serialize and deserialize the object back.

You could use the json_encode and json_decode() functions in order to serialize/deserialize PHP objects using the JSON interoperable format.

Darin DimitrovDarin Dimitrov
875k233 gold badges3068 silver badges2786 bronze badges

Serialization is the process of turning data (e.g. variables) into a representation such as a string, that can easily be written and read back from for example a file or the database.

Use cases? There are many, but generally it revolves around the idea of taking a complex, nested array or object and turning it into a simple string that can be saved and read later to retrieve the same structure. For example, provided you have in php:

Instead of going through every array member individually and writing it one could just:

And the serialized array is ready to be written anywhere as a simple string, in such a way that retrieving this string again and doing unserialize() over it gets you the exact same array structure you had before. Yes, it's really that simple.

MahnMahn
12.3k9 gold badges49 silver badges74 bronze badges

I need to know some cases we need the term serialization and how things are going without it?

Serialization can become handy if you need to store complete structures (like an invoice with all associated data like customer address, sender address, product positions, tax caclulcations etc) that are only valid at a certain point in time.

All these data will change in the future, new tax regulations might come, the address of a customer changes, products go out of life. But still the invoice needs to be valid and stored.

This is possible with serialization. Like a snapshot. The object in memory are serialized into a (often like in PHP) binary form that can be just stored. It can be brought back to live later on (and in a different context). Like with this invoice example: In ten years, the data can still be read and the invoice object is the same as it was ten years earlier.

In other word, Where you must need serialization and without it your code will be missing some important feature.

That was one example. It's not that you always needs that, but if things become more complex, serialization can be helpful.

hakrehakre
164k33 gold badges323 silver badges637 bronze badges
Php

Node Js Php Serialize Data Table

Since you've tagged it with javascript, one kind of serialization could be form serialization.

Here are the references for the jQuery and prototype.JS equivalents.

What they basically do is serialize form input values into comma-separated name-value pairs.

Php Serialize Array

So considering an actual usage..

And you would probably do $GET['a'] to retrieve those values, I'm not familiar with PHP though.

Js Serialize Array

Robin Maben

Node Js Php Serialize Data Python

Robin Maben

Node Js Php Serialization Data

14.6k14 gold badges58 silver badges93 bronze badges