読者です 読者をやめる 読者になる 読者になる

Hiroto's diary

プログラミング関連を書くかも

PHPでJSON5パーサーを作った

PHPPHP向けのJSON5パーサーを作りました。

JSON5とは

JSON5とは普通のJSONの不満を解消した仕様のJSONです。

JSONの不満と言えば

  • 末尾カンマが書けない
  • シングルクオーテーションが使えない
  • 複数行文字を表現出来ない
  • keyはに必ずクオーテーションが必要
  • コメントが書けない

等があります。JSON5は以上の様な不満を解消した書き方で書く事が出来ます。

詳しくは以下を見て下さい。

github.com

作った経緯

PHP向けのJSON5パーサーを探しているときに

github.com

というライブラリを見つけた。

けどこれはPHP標準のjson_encodeの様な関数で書かれていて、composerでインストール出来ないので不便だと思って自分で書き直しました。

インストール方法

全部GitHubのREADMEに書かれています。

github.com

Composerからもインストール出来ます。

composer require hiroto-k/json5-php

packagist.org

使い方

基本的にはHirotoK\JSON5\JSON5クラスを使います。他のクラス(HirotoK\JSON5\Parser等)は内部で使うクラスです。

<?php
require "vendor/autoload.php";

use HirotoK\JSON5\JSON5;


$json5_string = "{hoge: 'foo',}";

// JSON5の文字列をデコードする時は'JSON5::decode'メソッドを使う
// 標準だと'stdClass'で返ってくる
$json_object = JSON5::decode($json5_string);

// 第二引数に`true`を指定すると'array'で返ってくる
$json_array = JSON5::decode($json5_string, true);



$json5_file = "./tests/files/example.json5";

// ファイルからのデコードでは`JSON5::decodeFile`メソッドを使う
// 標準だと'stdClass'で返ってくる
$json_object = JSON5::decodeFile($json5_file);

// 第二引数に`true`を指定すると'array'で返ってくる
$json_array = JSON5::decodeFile($json5_file, true);

// 第一引数には'SplFileObject'も渡せる
$json_object = JSON5::decodeFile(new SplFileObject($json5_file));
$json_array = JSON5::decodeFile(new SplFileObject($json5_file), true);