json_encode関数:配列やオブジェクトをJSON文字列に変換する

ここ数年、Javascriptでのオブジェクトの扱いやすさから、サーバサイドとのAjax通信にはJSONを使われる機会も多くなってきたのではないでしょうか。
おそらく多くの方がこの関数を使ったことも増えてきたのではないかと思いますので、改めてご紹介します。

JSONとは

JSON(ジェイソン、JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptにおけるオブジェクトの表記法をベースとしているが、JSONはJavaScript専用のデータ形式では決してなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しに使えるよう設計されている。(※Wikipediaより引用)

詳細な仕様は省きますが、たとえば下記のような文字列としてオブジェクトを表現することができます。

{
    "name": "Earth",
    "radius": 6356.752314,
    "surface_area": 5.100656e8,
    "atmosphere": ["nitrogen", "oxygen", "argon", "carbon dioxide"]
}

それでは使い方をご紹介します。

使い方

$json_text = json_encode( $var );

指定可能な引数

この関数は第1引数以外にも指定が可能です。

説明
第1引数 変数 JSONに変換する任意の値、配列やオブジェクト。
第2引数
(省略可)
定数 JSONへのエンコードするためのオプション(ビットマスクで複数指定可能)。
第3引数
(省略可)
数値 JSON文字列の最大の深さ。
第2引数で指定可能な定数
定数 説明
JSON_HEX_TAG 文字列に含まれる、<および>の文字をそれぞれ\u003Cおよび\u003Eに変換する。
JSON_HEX_AMP 文字列に含まれる、&の文字を\u0026に変換する。
JSON_HEX_APOS 文字列に含まれる、’の文字を\u0027に変換する。
JSON_HEX_QUOT 文字列に含まれる、”の文字を\u0022に変換する。
JSON_FORCE_OBJECT 第1引数に非連想配列を指定した場合に、配列ではなくオブジェクト形式に変換する。
JSON_NUMERIC_CHECK 数値として認識可能な文字列は、数値に変換する。
JSON_BIGINT_AS_STRING 大きな整数値は、文字列形式に変換する。
JSON_PRETTY_PRINT JSON文字列を人が識別しやすい整形された文字列に変換する。
※上記の「JSONとは」で表現しているように整形されます。
JSON_UNESCAPED_SLASHES /の文字列をエスケープしない。
JSON_UNESCAPED_UNICODE マルチバイト文字列を\u0000形式に変換しない。
JSON_PARTIAL_OUTPUT_ON_ERROR 変換できない値を無視して処理を続行する。

サンプルプログラム

<?php
class Planet {
    public $name;
    public $radius;
    public $surface_area;
    public $atmosphere;
}

$earth = new Planet();
$earth->name = 'Earth';
$earth->radius = 6356.752314;
$earth->surface_area = 5.100656e8;
$earth->atmosphere = array("nitrogen", "oxygen", "argon", "carbon dioxide");

echo json_encode($earth);

実行結果

{"name":"Earth","radius":6356.752314,"surface_area":510065600,"atmosphere":["nitrogen","oxygen","argon","carbon dioxide"]}

使いどころ

昨今のRESTful APIなどでもJSON形式を使われることが多くなり、Webプログラマの方は頻繁にJSONと戯れているのではないでしょうか。
そんなあなたにぴったりの関数です。

json_decode関数については次回ご紹介する予定です。

公式サイト

http://php.net/manual/ja/function.json-encode.php

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>