php-extended/php-json-object

此包已被废弃且不再维护。作者建议使用php-extended/php-reifier-object包代替。

一个用于操作JSON对象的PHP助手


README

一个用于操作JSON对象的PHP助手

coverage build status

安装

此库的安装通过composer进行。从其网站下载composer.phar。然后将其添加到您的composer.json文件中

	"require": {
		...
		"php-extended/php-json-object": "^5",
		...
	}

然后运行php composer.phar update以安装此库。此库所有类的自动加载都通过composer的自动加载器完成。

基本用法

此类是一个助手,旨在扩展。例如,一个表示以下信息的价格对象

{
	"price": "199.99",
	"currency": "USD",
	"date": "2017-07-12 21:21:42"
}

此对象应使用原生PHP的json_decode函数进行解析,然后将返回的数组提供给以下类


use PhpExtended\Json\JsonObject;

class ExamplePrice extends JsonObject
{
	
	/**
	 * 
	 * @var float
	 */
	public $_price = null;
	
	/**
	 *
	 * @var string
	 */
	public $_currency = null;
	
	/**
	 *
	 * @var \DateTimeInterface
	 */
	public $_date = null;
	
	public function __construct(array $json, $silent = false)
	{
		// filters all error, status and code attributes for error handling
		$data = parent::__construct($json, $silent);
		
		// then iterates on the remaining elements
		foreach($data as $key => $value)
		{
			switch($key)
			{
				case 'price':
					$this->_price = $this->asFloat($value, $silent);
					break;
				case 'currency':
					$this->_currency = $this->asString($value, $silent);
					break;
				case 'date':
					$this->_date = $this->asDatetime($value, 'Y-m-d H:i:s', $silent);
					break;
				default:
					if(!$silent)
						throw new IllegalArgumentException();
			}
		}
	}
	
}

然后可以使用以下代码使用此类


$json_array = json_decode($json_string, true);		// important to have arrays
$json_object = new ExamplePrice($json_array, true);	// set to false if you want exceptions on errors
echo $json_object->_currency;		// should echo 'USD'
var_dump($json_object->_price);		// should echo float:199.99

JsonObject是所有其他对象的基础对象。此对象还可以收集JSON中提供的状态码,如果在statuscode单词中提供,并在errormessage单词中提供错误消息。请注意,如果有多个属性匹配这些单词,则此对象只会取最后的一个,这取决于给json中的属性顺序。

JsonCollection对象用于处理[{ ... }, { ... }]情况。

在外部对象中,您需要处理json对象的键,然后使用数组中对象的类名创建一个JsonCollection对象。

JsonCollection对象还可以收集如果json中找到的键包含单词error的错误消息。这些将不会抛出当键值不可接受时抛出的JsonException(即,对于集合,它们都必须是整数)。

JsonPagination对象是JsonCollection的扩展。它表示分页的元数据,包含计数和边界,以及将使用JsonCollection构建的内部数据集。

JsonSuccess对象还可以收集服务器如果通过json在successresponse单词中提供的布尔响应。

JsonCount对象还可以收集如果服务器通过json在countvalue单词中提供的整数响应。

JsonDate对象还可以收集如果服务器通过json在datetoday单词中提供的日期响应。

JsonTime对象还可以收集如果服务器通过json在timenow单词中提供的时间响应。

JsonTimestamp对象还可以收集如果服务器通过json在datetimetimestampdatetimenow单词中提供的时间戳响应。

JsonDateTime对象还可以收集如果服务器通过json在datetimetimestampdatetimenow单词中提供的日期和时间响应,并且如果它们格式化为\DateTime类中的任何格式常量。

JsonMac48 对象也可以从服务器收集由 json 中的 mac 字段提供的 48 位 MAC 地址响应。

JsonMac64 对象也可以从服务器收集由 json 中的 mac 字段提供的 64 位 MAC 地址响应。

JsonIpv4 对象也可以从服务器收集由 json 中的 ipv4 字段提供的 ipv4 响应。

JsonIpv4Network 对象也可以从服务器收集由 json 中的 network 字段提供的 ipv4 网络响应。

JsonIpv6 对象也可以从服务器收集由 json 中的 ipv6 字段提供的 ipv6 响应。

JsonIpv6Network 对象也可以从服务器收集由 json 中的 network 字段提供的 ipv6 网络响应。

JsonEmailAddress 对象也可以从服务器收集由 json 中的 email 字段提供的电子邮件地址响应。

JsonEmailAddressList 对象也可以从服务器收集由 json 中的 list 字段提供的电子邮件地址列表响应。

JsonMailbox 对象也可以从服务器收集由 json 中的 mailbox 字段提供的邮箱响应。

JsonMailboxList 对象也可以从服务器收集由 json 中的 list 字段提供的邮箱列表响应。

JsonMailboxGroup 对象也可以从服务器收集由 json 中的 group 字段提供的邮箱组响应。

JsonMailboxGroupList 对象也可以从服务器收集由 json 中的 list 字段提供的邮箱组列表响应。

JsonMetaRecord 对象也可以根据其状态收集数据库记录的元数据,以便快速检查需要更新的位置。

许可

MIT 许可(见 许可文件)。