使用 PHP 编码、解码、处理错误以及验证 JSON

v1.0.0 2016-08-23 13:29 UTC

This package is not auto-updated.

Last update: 2024-09-27 23:18:48 UTC


README

Build Status Scrutinizer Code Quality Code Coverage License SensioLabsInsight

为什么?

主要是为了处理 JSON 编码/解码错误,并封装选项以便轻松编码。

使用方法

use BernardoSecades\Json\Json;

...

Json::decode($value);
Json::encode($value);

json encode 中的选项

use BernardoSecades\Json\Json;
use BernardoSecades\Json\Option;
use BernardoSecades\Json\ArrayOption;

...

$options = new ArrayOption();
$options[] = Option::JSON_UNESCAPED_UNICODE(); // Use enum object
$options[] = Option::JSON_UNESCAPED_SLASHES();
$options[] = Option::JSON_NUMERIC_CHECK();

Json::encode($value, $options);

处理错误

use BernardoSecades\Json\Json;
use BernardoSecades\Json\DecodeException;
use BernardoSecades\Json\EncodeException;

...

try {
    Json::decode($value);
} catch (DecodeException $exception) {
    // do something
}

// or

if (!Json::isValid($value)) {
   // do something
}

try {
    Json::encode($value);
} catch (EncodeException $exception) {
 // do something
}

从 Encode/Decode 异常中获取信息

use BernardoSecades\Json\Json;
use BernardoSecades\Json\DecodeException;

...

try {
    Json::decode($value);
} catch (DecodeException $exception) {

    $errorMessage = sprintf('%s , json error code %d', 
        $exception->getMessage(), // see https://php.ac.cn/manual/en/function.json-last-error-msg.php
        $exception->getCode(),    // see https://php.ac.cn/manual/en/json.constants.php
    ); 

    $this->logger->error($errorMessage);
    // do something more
}

安装

composer require bernardosecades/php-json