Help us understand the problem. What is going on with this article?

シリアライズ(serialize)とエンコード(encode)の違いについて

More than 1 year has passed since last update.

シリアライズとエンコードの違いを学んだのでざっくりと概要まとめ。

厳密な定義というよりは用途の視点からまとめました。
間違いなどありましたら、ご指摘いただけると助かります...

エンコード

エンコードとは単なる形式変換のこと

「CDデータをMP3にエンコード」とかみたいに、単純に形式変換することです。

PHP では
json_encode($test)
でよく遭遇します。
(↑では $test データをJSON形式にに変換(エンコード)します。)

使用場面

自前のAPIとか。
たとえば、外側に「配列を配列として送りたい」時とかにJSON形式にして送ります。
JSON形式はブラウザとか、他の言語とかでも配列として解釈できるからです。(JSON形式になってると操作しやすいので嬉しい)

シリアライズ

シリアライズとは「保存するための」形式変換のこと

使用場面

配列とかオブジェクトを一旦どこかのファイルに保存しておきたいとき。
自分のファイルに配列を一時保存しときたい時とかに使います。
違う処理の時に、そのファイルから配列、オブジェクトを読み込んで使用できます。

自分が遭遇したのは、古いシステムでxmlファイルをシリアライズして保存 → 読み込む時にアンシリアライズしてxmlに戻すというものでした。
( json_encode() でできるじゃん(当時は json_encode() がなかったらしい))

プログラムA で PHP で配列を作る。これをシリアライズしたファイル「hoge」として保存。
プログラムB で「hoge」ファイルの読み込み。(文字列)
「hoge」ファイルをアンシリアライズして配列に戻す。

まとめ

シリアライズはエンコードの中でも特殊なパターンで、情報を保存可能な形にすること。
シリアライズでやってることはだいたい json_encode でできる(と思う。)

nogino
2017年からエンジニア。 基本自分用に書いてあるので見にくいです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした